在 C++ dll 项目中使用对话框

问题描述 投票:0回答:3

我想向 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 库。

c++ dll mfc dialog
3个回答
1
投票

是的,这绝对是可能的,“在共享 DLL 中使用 MFC”就是您想要的。

如果您打开了预编译头文件,您的项目中将会有一个

stdafx.h
,其中应包含各种
#include <afx...>
这些是需要包含的 MFC 头文件。

我怀疑你的第二个错误会随着

Rebuild All
消失。

您可能会遇到或可能不会遇到的另一个问题是,在对话框实例上调用

DoModal()
后没有任何反应。在这种情况下,将
AFX_MANAGE_STATE(AfxGetStaticModuleState())
放在
DoModal()

之前

0
投票
  • 什么是MFC标准库?它应该是标准 Windows 库。
  • 您实际上使用 MFC 来创建对话框(CDialog 等)吗?如果没有,就不需要使用MFC。
  • 如果您使用MFC,最好创建一个支持MFC的DLL项目,查找所有设置并将它们放入您的DLL中。它包括 C++ 设置、链接器和 manifest 工具设置。

0
投票

我知道这已经很旧了,因为对于勇敢的人来说,这是黄金。是的,这是可能的,也许在最近的 VS C++ 上有点棘手。您需要的是“MFC 扩展 DLL”。只需在使用 Visual Studio 向导创建 DLL 时选择此“扩展模式”即可。

如果您创建(或改编自项目)常规 MFC DLL,则在使用最新的 VS C++(即 VS C++ 2015)时将无法创建 CDialog。它也可以在 VS C++ 6.0 上工作。

© www.soinside.com 2019 - 2024. All rights reserved.