文章类型: VC&C++
关键词: VC2015,Release,#error,Building,MFC,application,with,/MD[d],(CRT,dll,version)
内容摘要: VC2015 Release #error Building MFC application with /MD[d] (CRT dll version)

VC在Release出现fatal error C1189:Building MFC application with /MD[d] (CRT dll version)

2018/10/10 14:08:21    来源:apple    阅读:

将VC开发的项目进行发布,在调试的Debug模式下运行没有错误,切换至Release下发布时,出现了错误,提示

fatal 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]

查找了一些资料,确定了错误的原因,由于本项目是基于MFC开发的,项目中也引用了其他的DLL项目,结果在Realse下编译了出现了下面的错误,

程序时出现以下问题:d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(24): fatal 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]

下面给出解决方法:

按照提示,作出以下修改:

image.png

    将上图中所处的位置,即“项目属性页->配置属性->C/C++->代码生成->运行库”的值改为下图中的值,即“多线程调试 DLL (/MDd)”(在Debug模式下设置),如果是Release模式下,将此值设置为“多线程 DLL (/MD)”,如下图所示;


image.png


     在查阅相关资料后发现:静态链接mfc库的话,那么运行库也得设置成静态链接。 动态链接mfc库,运行库也得设置成动态链接。撤销以前所做修改,做出如下修改:在项目属性位置下进行修改,即:“项目属性页->配置属性->常规->MFC的使用”的值改为下图中的值,即“在共享 DLL 中使用 MFC”

image.png

    

看看vs的项目属性设置,以下两项属性设置必须一致:(一个动态,一个静态)

静态设置为:

运行库:多线程(/MT)

MFC的使用:在静态库中使用MFC

或者两项都设置为:

动态设置为:

运行库:多线程DLL(/MD)

MFC的使用:在共享DLL中使用MFC

操作方式:打开项目属性页

配置属性->常规->MFC的使用

c/c++->代码生成->运行库


至此,问题解决!


同时需要注意,切换至Release模式下发布编译时,有时出现下面的错误,

CString str;
str.Format("今天:%4d年%2d月%2d日", systime.wYear, systime.wMonth, systime.wDay);

Format函数的居然出错类型不匹配的问题,没有与参数列表匹配的 重载函数 "ATL::CStringT<BaseType, StringTraits>::Format [其中 BaseType=wchar_t, StringTraits=StrTraitMFC_DLL<wchar_t, ATL::ChTraitsCRT<wchar_t>>]" 实例

原因为:项目中使用的字符集不一致造成的,

解决办法:字符串用TEXT宏,可以适应Unicode和多字节环境
str.Format(_T("abc%d"), 10);

或者将,

在项目属性位置下进行修改,即:“项目属性页->配置属性->常规->字符集”的值改为“使用多字节字符集”即可解决问题。

↑ 上一篇文章:msado15.dll 使用心得 关键词:数据库,操作,msado15.dll,,使用 发布日期:2018/10/10 13:27:59
↓ 下一篇文章:VS2015下的MFC工程由于MFC库使用方式与运行时库不一致引起的编译问题 关键词:VC2015,Release,#error,MFC工程的.. 发布日期:2018/10/10 14:33:52
相关文章:
VS2015下的MFC工程由于MFC库使用方式与运行时库不一致引起的编译问题 关键词:VC2015,Release,#error,MFC工程的MFC库使用方式与运行时库不一致引起的编.. 发布日期:2018-10-10 14:33
VC++ MFC DLL动态链接库编写详解 关键词:VC++,MFC,DLL,动态链接库,编写,详解 发布日期:2016-08-19 10:45
[DLL]在非MFC扩展Dll中导出类的简单例子 关键词:在非MFC扩展Dll中导出类的简单例子 发布日期:2016-08-22 14:52
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......