我正在尝试使用Visual Studio 2005创建项目的x64版本。它目前因链接器错误C1905失败,“前端和后端不兼容(必须针对相同的处理器)。”
从我收集的内容来看,这基本上是说我的x64版本试图与x86模块链接。不幸的是,这个项目与很多的不同库相关联。我不确定导致问题的是哪一个。
有没有办法从Visual Studio中获取更多信息?
答案 0 :(得分:11)
首先,检查Configuration Manager(Build> Configuration Manager ...)以确保您为同一平台构建所有项目。
如果这没有帮助,那么从Visual Studio命令提示符(可从“开始”菜单中获得)中,您可以使用dumpbin
通过执行以下操作来确定.lib和.obj文件的体系结构:
C:\Foo> dumpbin /headers Foo.lib | more
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file Foo.lib
File Type: LIBRARY
FILE HEADER VALUES
14C machine (x86)
3 number of sections
4C6CB9B6 time date stamp Wed Aug 18 21:57:26 2010
113 file pointer to symbol table
8 number of symbols
0 size of optional header
100 characteristics
32 bit word machine
标题值下的第一行告诉您编译.lib / .obj的架构(在本例中为x86)。
如果您有很多链接的中间体,只需查找x86(或x64)文件就可以自动执行此操作:
for /R %f in (*.obj *.lib) do @echo %f && dumpbin /headers %f | findstr /c:"machine (x86)"
答案 1 :(得分:5)
另一个原因是编译标志。如果某些未设置为整个程序优化而其他未设置,那么您也会收到此错误。 VS中有两个这样的设置 - 一个在General级别,一个在C ++ / Optimization。旧版VS生成的库没有这个集合。由较新版本的VS生成的那些设置。
找出有问题的库的唯一方法是一次取消一个,直到错误消失。