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

 深tp悟人生 发布于 2023-02-06 16:35

我的解决方案昨天建成 今天除了.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)   game
Error   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)   game
Error   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)   game
Error   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)   game
Error   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

关于捅眼睛有用...

这个类似问题的答案是:

您正在使用/ MD(使用DLL版本的CRT)编译的代码与使用/ MT编译的代码(使用静态CRT库)混合.这不起作用,所有源代码文件必须使用相同的设置进行编译.鉴于您使用的是使用/ MD预编译的库,几乎总是正确的设置,您也必须使用此设置编译自己的代码.

我已检查(并重新检查)解决方案中的所有项目仍在使用相同的运行时库; Multi-threaded DLLfor Release和Multi-threaded Debug DLLfor Debug.我完成了一个完整的解决方案重建,以确保.

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.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有