我想向 c++ dll 应用程序添加一个对话框。首先我想知道这是否可行,然后我该如何编译项目。
当我在配置中设置“使用 MFC 标准库”时,我收到错误:致命错误 C1189:#error : 使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用/MD[d]
当我在共享 dll 文件中使用 MFC 设置配置时,收到错误:一般错误 c101008a:无法将更新的清单保存到文件“.\Debug\RenameDLL.dll.embed.manifest”错误参数。
有什么建议如何解决这个问题吗?我还使用 windows.h 库。
是的,这绝对是可能的,“在共享 DLL 中使用 MFC”就是您想要的。
如果您打开了预编译头文件,您的项目中将会有一个
stdafx.h
,其中应包含各种 #include <afx...>
这些是需要包含的 MFC 头文件。
我怀疑你的第二个错误会随着
Rebuild All
消失。
您可能会遇到或可能不会遇到的另一个问题是,在对话框实例上调用
DoModal()
后没有任何反应。在这种情况下,将 AFX_MANAGE_STATE(AfxGetStaticModuleState())
放在 DoModal()
之前
我知道这已经很旧了,因为对于勇敢的人来说,这是黄金。是的,这是可能的,也许在最近的 VS C++ 上有点棘手。您需要的是“MFC 扩展 DLL”。只需在使用 Visual Studio 向导创建 DLL 时选择此“扩展模式”即可。
如果您创建(或改编自项目)常规 MFC DLL,则在使用最新的 VS C++(即 VS C++ 2015)时将无法创建 CDialog。它也可以在 VS C++ 6.0 上工作。