C++/MFC-动态链接库(DLL)

来源:互联网 发布:达州市行知中学 编辑:程序博客网 时间:2024/05/22 15:00

一、MFC类DLL创建

新建一个MFC DLL工程,取名为MFCDLL。


二、入口初始化

virtual BOOLInitInstance();

三、退出清理

virtual int ExitInstance();

四、导出MFC类函数

法一:

在函数名、变量名等的前面加上    extern "C" __declspec(dllexport)

法二:

在MFCDLL.cpp文件中直接写函数,在到MFCDLL.def文件中加上函数名、变量名等


注:后面可不加序号,程序会自动从1开始排序。若要制定序号(例:add @ 1)

法三:

//TODO:  如果此 DLL 相对于 MFC DLL 是动态链接的,
// 则从此 DLL 导出的任何调入
// MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
// 该函数的最前面。
//
// 例如: 
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。  这意味着
// 它必须作为函数中的第一个语句
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。

AFX_MANAGE_STATE(AfxGetStaticModuleState());   //它必须作为函数中的第一个语句出现,


五、使用MFC DLL

①将相应的dll和lib文件复制到工程的debug目录。

②#pragam comment(lib,"xxx.lib")

可参考C/C++-动态链接库(DLL)两种方法。