一、首先MFC的DLL分为两种:
1、规则的DLL:可以被所有的window程序运用;
主要包括:(1)共享MFC-DLL,这种比较小。DLL中不包含MFC的动态库,需要另外安装动态库
(2)静态MFC-DLL,这种比较大些,DLL中包含有MFC的动态库,可以独立使用
2、扩展DLL,DLL中所定义的函数和类都可以被MFC程序使用,是只能被MFC程序使用,DLL中不包含需要的MFC动态库
二、导入导出
1、DEF文件
EXPORTS语句列出名称,可能的话还会列出DLL导出函数的序号值。通过在函数名的后面加上@符和一个数字,给函数分配序号值。当指定序号值时,序号值的范围必须是从1到N,其中N是DLL导出函数的个数。一般不能用于导出类(在扩展DLL中)
; 库名.def
LIBRARY 库名
EXPORTS
函数名1 @1
函数名2 @2
……
函数名n @n
2、关键字或者宏的方式
除了使用DEF文件来导出函数外,还可以在源程序中使用__declspec(dllexport)关键字或其替代宏AFX_EXT_CLASS:
#define AFX_EXT_CLASS AFX_CLASS_EXPORT (定义在头文件afxv_dll.h中)
#define AFX_CLASS_EXPORT __declspec(dllexport) (定义在头文件afxver_.h中)
来导出函数和整个C++类(扩展DLL中)。
导出外部C格式 #define DllExport extern "C" __declspec(dllexport)