c++ - Visual Studio - 查找导致 C1905(处理器不兼容)的模块

标签 c++ visual-studio module linker 64-bit

我正在尝试使用 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/

相关文章:

c++ - 将表示二进制的字符串转换为表示等效十六进制的字符串

visual-studio - Visual Studio 中的编码 Web 测试 : Testing first link on page

import - Idris2 中的 `import using` 或 `import hiding`

module - 为什么这个模块不可见?

c++ - boost::program_options 值 vector 与 zero_token

c# - 使用 BSTR 对结构执行 memset

c++ - Qt 项目中的前向声明

database - Visual Studio 数据库自定义条件搜索不起作用

asp.net-mvc - Visual Studio 2010 “Publish”不会复制Razor View 文件

python 包导入模块使用 __init__.py