突然,我的程序出现如下链接错误:
libcpmtd.lib(xlock.obj):错误LNK2038:'RuntimeLibrary'不匹配。值'MTd_StaticDebug'与[project x]的值不同,即:'MDd_DynamicDebug'
由于此错误突然在多台计算机上出现,所以我相信这不是由于意外修改任何文件引起的。
版本:Visual Studio 2013
您能否提供有关此错误原因以及如何解决的任何提示?
我做了什么:我从项目设置的导入库列表中删除了libcpmtd.lib,然后构建错误消失了,一切都OK。
但是,我不确定libcpmtd.lib是干什么用的?Google告诉我里面有CRT,但是具体内容是什么?
也许此库已添加,但从某些时候开始不相关。
在libcpmtd.lib中是什么?我想弄清楚删除lib后可能丢失了什么。
这些是C ++标准运行时库。使用Visual C ++,您有2个选项,可以为它链接到的库提供4种排列。
正如它所暗示的,您是否想要具有附加错误检查的C ++运行时库?
如果恰好仅编译一个简单的exe,则静态链接到库应该没问题。但是,如果您有一个包含多个DLL的大型项目,则动态加载CRT是有意义的(因此它可以在DLL之间共享,而不是复制到每个DLL中)。
所以您拥有的是配置错误的构建。您需要检查项目中的每个库,DLL和exe的C / C ++运行时库设置(您可以在项目设置中的C / C ++->代码生成中找到它)] >。
[您需要确保每个链接都链接到相同的运行时库(即,所有调试设置都为Debug DLL,所有发布设置均为Release DLL)。
如果不能解决问题,那么还有两个可能的原因: