将类从 MFC 移植到 C++ 控制台应用程序。使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要
Posted
技术标签:
【中文标题】将类从 MFC 移植到 C++ 控制台应用程序。使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要【英文标题】:Porting a class from MFC to a C++ Console Application . Building MFC application with /MD[d] (CRT dll version) requires 【发布时间】:2013-03-21 00:07:47 【问题描述】:我正在尝试从基于 MFC 的应用程序中移植某些功能。显然我没有使用 MFC 的经验。我感兴趣的类继承自 CAsyncSocket。在 MSDN 上查找该类时,它指出该类派生自 afxsock.h
。当我将它添加到我的控制台应用程序代码时,我收到了以下错误消息
Error 1 error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h
关于如何解决此问题的任何建议?
【问题讨论】:
【参考方案1】:为了使用任何 MFC 的东西,您需要将您的程序与 MFC 链接。最简单的方法是通过项目属性。打开您的项目属性并转到“常规”。选择“使用 MFC”或者“在静态库中使用 MFC”或“在共享 dll 中使用 MFC”。尝试重新构建您的程序。之后您可能需要调整一些其他选项
【讨论】:
谢谢你能告诉我两者的区别吗? 如果您选择后者,您需要将 MFC 与您的应用程序一起分发(通过安装程序)。如果您选择前一个选项,程序二进制文件的大小会更大,但您不需要随它分发任何 dll。它可以在任何 PC 上正常工作以上是关于将类从 MFC 移植到 C++ 控制台应用程序。使用 /MD[d](CRT dll 版本)构建 MFC 应用程序需要的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Eclipse CDT 自动将类从命名空间中取出?
尝试将控制台应用程序移植到 MFC GUI,但遇到 stdafx 问题