c – 是什么导致VS2013错误LNK2005:__xi_a已在MSVCRT.lib(cinitexe.obj)中定义?

c – 是什么导致VS2013错误LNK2005:__xi_a已在MSVCRT.lib(cinitexe.obj)中定义?,第1张

概述我的解决方案昨天建成今天除了.hpp和.cpp文件之外什么也没改变. Visual Studio 2013中的完整错误文本(使用2013年11月的CTP): Error 1 error LNK2005: __xi_a already defined in MSVCRT.lib(cinitexe.obj) C:\Users\drtwox\dev\repos\game\trunk\engi 我的解决方案昨天建成今天除了.hpp和.cpp文件之外什么也没改变.

Visual Studio 2013中的完整错误文本(使用2013年11月的CTP):

Error   1   error LNK2005: __xi_a already defined in MSVCRT.lib(cinitexe.obj)   C:\Users\drtwox\dev\repos\game\trunk\engine\game\liBCMT.lib(crt0init.obj)   gameError   2   error LNK2005: __xi_z already defined in MSVCRT.lib(cinitexe.obj)   C:\Users\drtwox\dev\repos\game\trunk\engine\game\liBCMT.lib(crt0init.obj)   gameError   3   error LNK2005: __xc_a already defined in MSVCRT.lib(cinitexe.obj)   C:\Users\drtwox\dev\repos\game\trunk\engine\game\liBCMT.lib(crt0init.obj)   gameError   4   error LNK2005: __xc_z already defined in MSVCRT.lib(cinitexe.obj)   C:\Users\drtwox\dev\repos\game\trunk\engine\game\liBCMT.lib(crt0init.obj)   gameError   7   error LNK1169: one or more multiply defined symbols found   C:\Users\drtwox\dev\repos\game\trunk\engine\build\x64\Test\game.exe 1   1   game

关于捅眼睛有用…

This answer至this similar question说:

You are mixing code that was compiled with /MD (use DLL version of
CRT) with code that was compiled with /MT (use static CRT library).
That cannot work,all source code files must be compiled with the same
setting. Given that you use librarIEs that were pre-compiled with /MD,
almost always the correct setting,you must compile your own code with
this setting as well.

我已检查(并重新检查)解决方案中的所有项目仍在使用相同的运行时库;用于发布的多线程DLL和用于调试的多线程调试DLL.我完成了一个完整的解决方案重建,以确保.

Subversion日志显示自2013-12-04以来未包含所有第三方库的“外部”目录;一个月前.我检查了他们的配置并重建了它们.

Subversion日志还显示自昨天以来仅修改了现有的.hpp和.cpp文件.没有添加新库,没有新的外部头文件#included,也没有更改项目配置.在7个文件中有超过200行已更改和新代码.

可能是什么问题呢?

更新:编译器的日志:http://pastebin.com/aHJ5Xi2V

解决方案:问题不是错误/ MT / MD编译器标志,它是GLEW库和缺少#define GLEW_STATIC.我将GLEW项目设置更改为使用/ Zl(忽略默认库名称),如下所示:http://msdn.microsoft.com/en-us/library/f1tbxcxh.aspx.

解决方法 某些东西导致两个运行时都被链接起来.

首先尝试清理(手动)项目创建并重建它的所有.obj和.lib文件.

如果这没有帮助,请在IDE中设置链接器的/ VERBOSE标志(“链接器|常规|显示进度”=“显示所有进度消息(/ VERBOSE)”).

然后看输出;在IDE中,它将位于名为< project-name> .log的文件的构建输出目录中.

您将看到每个库的搜索位置以及导致库被搜索的对象文件.

更新:

日志输出显示由于正在处理的一个或多个目标文件(可能是库中的目标文件)中的DEFAulTliB指令而正在搜索liBCMT.lib.

但是,我不清楚输入哪个输入负责的日志输出 – 我认为它是glew32s.lib(其中的glew.obj对象).

有关查找哪些.obj / .lib文件具有DEFAulTliB指令的方法,请参见this SO answer.

您可能会在项目属性中设置/NODEFAulTliB:libcmt.lib选项(“忽略特定默认库”).

总结

以上是内存溢出为你收集整理的c – 是什么导致VS2013错误LNK2005:__xi_a已在MSVCRT.lib(cinitexe.obj)中定义?全部内容,希望文章能够帮你解决c – 是什么导致VS2013错误LNK2005:__xi_a已在MSVCRT.lib(cinitexe.obj)中定义?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存