x-x*_*x-x 6 c++ visual-studio visual-studio-2013
我的解决方案昨天建成 今天除了.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
Run Code Online (Sandbox Code Playgroud)
关于捅眼睛有用...
您正在使用/ 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.
某些原因导致两个运行时链接在一起。
首先尝试清理(手动)项目创建的所有 .obj 和 .lib 文件并重建它。
如果这没有帮助,请设置链接器的/VERBOSE标志(IDE 中的“链接器 | 常规 | 显示进度”=“显示所有进度消息 (/VERBOSE)”)。
然后看输出;在 IDE 中,它将位于构建输出目录中名为<project-name>.log.
您将看到每个库的搜索位置以及导致库被搜索的目标文件。
更新:
日志输出显示由于正在处理的一个或多个目标文件(可能是来自库的目标文件)中的指令而LIBCMT.lib正在搜索。DEFAULTLIB
但是,我不清楚日志输出是由哪个输入负责的 - 我认为是glew32s.lib(glew.obj其中的对象)。
请参阅此 SO 答案,了解查找哪些.obj/.lib文件具有DEFAULTLIB指令的方法。
您可能会/NODEFAULTLIB:libcmt.lib在项目属性中设置选项(“忽略特定默认库”)。
| 归档时间: |
|
| 查看次数: |
6387 次 |
| 最近记录: |