针对来自同一Visual Studio 2015项目的源文件中的目标文件的“RuntimeLibrary”检测到不匹配

时间:2017-01-27 14:11:47

标签: c++ visual-studio-2015 linker

在我不明白为什么会得到它的情况下,我遇到了常见的链接器错误。我将项目从静态链接(/ MT)更改为动态链接(/ MD)。在此之后我收到以下错误:

Error   LNK2038 mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't
match value 'MT_StaticRelease' in XY.obj    XXX [some folders]\XYZ.obj

XY和XYZ的源文件都是同一项目的一部分。该项目是用/ MD编译的。我首先想到我的重建中没有更新某些文件,所以我清理了构建并重建了项目。由于我仍然遇到相同的错误,我手动删除了包含.obj文件的构建文件夹并重建项目。我仍然得到错误。

我不明白的第二个影响是包含的库(我从静态版本更改为动态版本)找不到几个符号:

Error   LNK2001 unresolved external symbol __imp__strncat   LAAPTOF_Fuzzy_XOP   
[some folders]\ccc_vc120_md.lib(MxNET.obj)

等...

当我包含库的静态版本时,这些错误消失但我没有得到关于运行时库不匹配的错误,我希望得到它。

所有这些错误仅出现在32位版本的项目中。 64位版本构建良好。我检查了所有参数,它们是相同的,除非64位版本需要不同的参数。

有人可以向我解释我可能做错了吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我的项目曾经是一个visual studio 2010项目。我已经被警告过,即使转换器告诉你,将项目转换为更新版本的visual studio并不总是顺利进行。我不知道这是否真的是问题,但在设置新项目文件后,一切都正确链接。