关于MFC的DLL调用方法问题

Posted on 2018-04-01 12:54  moisiet  阅读(398)  评论(0编辑  收藏  举报

 参考资料:

一、dll导出方式:

MFC的DLL函数导出方法有两种:一种是通过模块定义文件DEF文件;另一种是在导出函数前加_declspec(dllexport)。

1.def文件方法:

只需要在EXPORTS后写上要导出的函数名称即可。

优点:导出函数名称在编译后不会发生改变,适合与VB、c等其他语言调用。

2._declspec(dllexport)方法:

在导出函数前添加,但是函数名称会发生改变,如果不想要改变,在其前面添加extern "C",表示按C方式导出;

即:extern "C" _declspec(dllexport) void funcname(void);

缺点:extern表示全局,“C”表示按c语言方式编译,这种方法只能导出全局函数。

二、导出全局变量,类静态变量

此时客户端必须有_declspec(dllimport)声明

一种简单的方法:

1.#ifdef _EXPORT

#define EXPORT_DLL extern "C" _declspec(dllexport)

#else

#define EXPORT_DLL extern "C" _declspec(dllimport)

#endif

将这段话写在dll导出函数的.h文件中,并在预处理器中定义_EXPORT即可。因为客户端也要包含该.h文件,所以对客户端也是有作用的。