使用VS2013编译64位时链接错误C1905

时间:2015-02-05 15:00:56

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

我有一个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位编译的代码。 无法在此处附加代码段,因为它是一个非常大的代码库。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

对于x64 build:

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

将此行插入所有* .vcxproj:

<PreferredToolArchitecture>x64</PreferredToolArchitecture>

在条目中:

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

这将解决您的问题。

答案 2 :(得分:0)

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

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