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