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

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

如何在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");

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有