创建共享 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)