之前的笔记搬运
MFC的Dll分为三种
(1)使用共享MFC DLL的规则DLL
(2)带静态链接MFC的规则DLL
(3)MFC扩展DLL
0x1 规则Dll和扩展dll的区别
“规则DLL”就是普通的C导出函数风格的DLL, 可以支持其他C/C++的软件调用,
“扩展DLL”导出的是MFC C++类,使用了MFC框架, 所以只支持MFC软件调用, 一般MFC扩展dll都是用于导出封装好的MFC类
0x2 静态链接和共享方式编译dll的区别
静态链接是指把mfc框架所有dll全部静态链接到你生成的dll里,而共享dll则是调用本机一套mfc框架共享的dll,所以静态链接编译出来的dll文件大小会比共享的编出来的dll大上许多;
因为共享方式是很多软件一起使用一套MFC框架Dll, 所以使用共享方式编译的Dll,在使用时就必须切换到自己的资源模块, 才能正常使用,就是在每一个导出函数内的第一行填写AFX_MANAGE_STATE(AfxGetStaticModuleState());这样在调用该函数前, 系统就会自动切换到自己的资源模块,在函数执行完成并切换回原来的资源模块;
AFX_EXT_CLASS可以代替declspec(dllexport)和declspec(dllimport)
只可以在扩展dll模式下使用此宏;