如何在非MFC扩展Dll中导出class说明及简单例子

如何在Dll中导出class说明:

新建两个工程,其中一个是dll工程(我的示例程序中这个工程名为DllClass),另一个是测试和使用dll的工程(名字为DllClassTest)

 
注意点:
  1。Dll工程编译完成后,将.lib和.dll文件拷贝到测试和使用dll的工程的适当目录下(我的程序是release目录),然后将
  Dll工程中的导出类的头文件(以下简称头文件)拷贝到测试和使用dll的工程的适当目录下(在我的程序中是拷贝到此工程文件所

在目录),然后把这个拷贝过来的头文件通过下面2和3进行修改。

  2。在Dll工程中的头文件使用的是 #define DLLCLASS_api __declspec(dllexport)  表示导出
  在测试和使用dll的工程中的头文件使用的是 #define DLLCLASS_API __declspec(dllimport)  表示导入

  3。不论Dll工程的头文件如何实现(比如说包括内联函数等等),
  在测试和使用dll的工程中的头文件中全部都是声明而没有定义(即将类成员函数的实现部分去掉)

  4。在测试和使用dll的工程的那个文件中包含对dll库的引入,分两步:
  首先在是测试和使用dll的工程的setting菜单(按ALT+F7可以调出)中的LINK选项卡中的object/Library modules:下填写对 dll的连接,比如dll文件名字为DllClass.lib和DllClass.dll,则填写 Release/DllClass.lib(注意目录,我的程序中.lib文件是在目录release下)


  然后,添加对头文件的包含,比如dll文件名字为DllClass.lib和DllClass.dll,头文件为DllClass.h,则包含头文
件为 #include "DllClass.h"
  
  由此,就可以使用了。

相关源码如下:
dll工程中的DllClass.h 内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllexport)

//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
 CDllClass(void);
 void MSG(const char * const str);
};

dll工程中的DllClass.cpp内容:
#include "stdafx.h"
#include "DllClass.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
  Dword  ul_reason_for_call, 
  LPVOID lpReserved
  )
{
  switch (ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:
 case DLL_THREAD_ATTACH:
 case DLL_THREAD_DETACH:
 case DLL_PROCESS_DETACH:
 break;
  }
  return TRUE;
}


CDllClass::CDllClass()

 return; 
}

void CDllClass::MSG(const char * const str)
{
 MessageBox(NULL,str,"",MB_OK);
}

Dll测试工程中的DllClass.h内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllimport)

//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
 CDllClass(void);
 void MSG(const char * const str);
};
Dll测试工程中DllClassTest.cpp内容:
首部:
#include "DllClass.h"
class DllClass;

代码部分:
 CDllClass  CTest;
 CTest.MSG("this is a string into dll");


转自:http://amyz.itpub.net/post/34151/457930

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值