我正在尝试使用 Visual Studio 2005 构建项目的 x64 版本。它当前失败,出现链接器错误 C1905,“前端和后端不兼容(必须针对相同的处理器)。”
据我所知,这实质上是说我的 x64 版本正在尝试与 x86 模块链接。不幸的是,这个项目链接到很多不同的库。我不确定哪个是导致问题的原因。
有没有办法从 Visual Studio 中获取更多信息?
最佳答案
首先,检查配置管理器(构建 > 配置管理器...)以确保您正在为同一平台构建所有项目。
如果这没有帮助,那么从 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:"机器 (x86)"
关于c++ - Visual Studio - 查找导致 C1905(处理器不兼容)的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3528182/