我已经建立了 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
在他们的两个项目设置中,我明确地将“图书馆员->常规->目标机”设置为 MachineX64。而且,使用 dumpbin,我可以检查相关的 zlib.lib 和 libpng 是否都针对 x64 进行了编译。
此外,“General->Whole Program Optimization”和“C/C++->Optimization->Whole Program Optimization”具有相同的值。
该问题仅发生在 x64 Release 配置中。x86 Debug、x86 Release 和 x64 Debug 都可以正常工作。
编辑:具体来说,问题是我收到 C1905/LNK1257 错误:
C1905: Front end and back end not compatible (must target same processor).
LNK1257: code generation failed