C1905 / LNK1257组合x64版本库

时间:2013-02-17 21:26:57

标签: visual-c++ linker static-libraries

我已经设置了zlib和libpng的静态库构建。两者都可以很好地编译成.lib文件。我正在使用MSVC 2010。

使用此设置,要使用libpng.lib,您还需要链接zlib.lib。为避免这种情况,我尝试使用lib.exe直接将zlib链接到libpng。我的调用看起来像:

call "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/lib.exe"  /OUT:x64\Release\libpng2.lib  x64\Release\libpng.lib  ..\zlib\x64\Release\zlib.lib  /LTCG

在他们的两个项目设置中,我明确设置了" Librarian-> General-> Target Machine"到MachineX64。并且,使用dumpbin,我可以检查相关的zlib.lib和libpng是否都为x64编译。

此外,"一般 - >整个计划优化"和" C / C ++ - >优化 - >整个程序优化"具有相同的价值观。

只有x64版本配置才会出现此问题。 x86 Debug,x86 Release和x64 Debug都可以正常工作。

编辑:具体来说,问题是我收到C1905 / LNK1257错误:

C1905: Front end and back end not compatible (must target same processor).
LNK1257: code generation failed

1 个答案:

答案 0 :(得分:1)

我遇到了VS2012的这个问题。您调用的lib.exe是x86工具的一部分。在 VC / bin 中的 amd64 子文件夹中,您将找到x64版本。打开 Visual Studio x64 Win64命令提示符将正确设置PATH,或者您可以直接调用x64 lib.exe,指定其完整路径。