一言以蔽之:给原项目包层接口。
具体实现:
- 新建一个MFC的DLL项目(MyDll);
- 删除MyDll项目的.rc文件;
- 将正常运行的exe项目(MyExe)的所有文件包括.h,.cpp,.rc和资源文件等复制到MyDll项目,MyExe.rc文件重命名为MyDll.rc
- 删除原实例化WinApp的.cpp类及其头文件,(一般名称为MyExe.cpp和MyExe.h);将所有对它的引用改成MyDll.h;(不做这一步会产生datacore.cpp line:380的错误);
- 在MyDll.cpp添加代码:
-
extern "C" __declspec(dllexport) void ShowDlg(void) //void ShowDlg(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState());//为了保证代码准确防止调用失败 CFileBrowserDlg dlg; dlg.DoModal(); }
- 选择生成方式,dllexport或者def(需要去掉extern “c” _decispecl(dllexport))编译即可生成MyDll.lib和MyDll.dll文件;
- 在其他项目需要的地方引用这两个文件即可。