创建共享 MFC 对话框:常规 DLL 或 MFC 扩展 DLL

Posted

技术标签:

【中文标题】创建共享 MFC 对话框:常规 DLL 或 MFC 扩展 DLL【英文标题】:Creating a shared MFC Dialog: Regular DLL or MFC extension DLL 【发布时间】:2010-07-15 10:58:07 【问题描述】:

在 VC++ 2005 中创建 MFC DLL 项目时,您会看到一个屏幕“应用程序设置”,可以选择带有静态/动态 MFC 的常规 DLL 或 MFC 扩展 DLL。

我们想要一个包含一些常用对话框的 DLL,以便我们可以在其他项目中使用它们,例如:

CGetNameDlg *dlg = new CGetNameDlg();
dlg->doModal();
string name = dlg->getName();
delete dlg;

我们不确定这是否需要扩展 DLL...如果这些是专门用于添加新控件以增强 MFC 本身,或者如果我们只是做一个动态链接到 MFC 的常规 DLL 项目,就像我们会做的那样一个 EXE 项目。

【问题讨论】:

这可能对那些仍然对是否选择MFC扩展DLL有疑问的人有所帮助:***.com/a/3313624/908336 【参考方案1】:

就我个人而言,我会创建一个常规 DLL。我发现常规 DLL 提供了比扩展 DLL 更大的代码分离,而且在每次调用 DLL 的入口点使用 AFX_MANAGE_STATE() 宏增加了复杂性。

如果您的代码设计得很好(例如,只向/从 DLL 传递本机对象),您可以在普通的 win32 应用程序/C# 应用程序/VB 应用程序中使用相同的 DLL,而不会遇到什么麻烦。

【讨论】:

【参考方案2】:

您可以将其作为常规 DLL 而不是 MFC 扩展,这将是我的首选。

【讨论】:

以上是关于创建共享 MFC 对话框:常规 DLL 或 MFC 扩展 DLL的主要内容,如果未能解决你的问题,请参考以下文章

与使用 MFC 的常规 DLL 链接时,MFC 应用程序断言失败

如何在 MFC 常规 DLL 中创建和使用 CFormView? (视觉工作室 2008)

非 MFC ATL 项目 (dll) 产生 MFC 相关错误

从应用程序对话框访问的 MFC 自定义键盘 DLL

MFC如何调用DLL(VC++)

MFC dll