我已经设置了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
答案 0 :(得分:1)
我遇到了VS2012的这个问题。您调用的lib.exe是x86工具的一部分。在 VC / bin 中的 amd64 子文件夹中,您将找到x64版本。打开 Visual Studio x64 Win64命令提示符将正确设置PATH,或者您可以直接调用x64 lib.exe,指定其完整路径。