1

我已经建立了 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
4

1 回答 1

2

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

于 2014-02-20T15:45:15.917 回答