【问题标题】:Link error C1905 while compiling for 64bit using VS2013使用 VS2013 编译 64 位时出现链接错误 C1905
【发布时间】:2015-04-05 12:00:50
【问题描述】:

我有一个 VC++ 代码 (VS2013),它在 32 位中编译得非常好。但是当我尝试在 64 位编译相同的代码时,我得到了下面的链接器错误。

1>LINK : fatal error C1905: Front end and back end not compatible (must target same processor).
1>LINK : fatal error LNK1257: code generation failed

我参考了链接:: Stackoverflow-link

能否请我帮忙解决这个问题以及为 64 位编译的代码。 无法在此处附加代码 sn-p 因为它是一个非常大的代码库。

【问题讨论】:

  • 您为目标机器架构指定了什么?确保您没有为您的构建混淆不同的 64 位架构类型。

标签: visual-c++ visual-studio-2013 64-bit 32bit-64bit


【解决方案1】:

您不能在同一个可执行文件或 DLL 中链接 32 位 (x86) 代码和 64 位 (x64) 代码。这意味着使用所有静态库、导入库和 DLL 的仅 64 位版本。这意味着确保您的解决方案中的每个项目都使用 x64 配置进行构建。

请参阅this post,了解有关 64 位本机编程的大量文章和演示文稿。

【讨论】:

    【解决方案2】:

    对于 x64 构建:

    有时,转换为新版本的旧项目会发生这种情况(例如:VC 2013 -> VC 2015)。

    将此行插入所有 *.vcxproj :

    <PreferredToolArchitecture>x64</PreferredToolArchitecture>
    

    在条目中:

    <PropertyGroup Label="Globals">
    ....
    </PropertyGroup>
    

    这将解决您的问题。

    【讨论】:

      【解决方案3】:

      经过数小时搜索我所有的 obj、库和配置后,我尝试将我的 MSBuild 详细设置设置为诊断级别(在 VS 中的工具/选项/项目和解决方案/构建和运行下)。这列出了链接器正在使用的所有 .lib,我能够找到一个 x86 库,它被 #pragma comment(lib, "foo.lib") 拉入。

      不确定为什么库列表不在 .tlog 文件之一中。

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        • 1970-01-01
        • 2018-12-09
        • 1970-01-01
        相关资源
        最近更新 更多