我正在尝试使用通过构建解决方案生成的 zlibstat.lib
zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln

它生成了一个 zlibstat.lib,但是当我将它与另一个项目链接时,出现以下错误:

错误 LNK2001:未解析的外部符号 _compress2
错误 LNK2001:未解析的外部符号 _uncompress
错误 LNK2019:未解析的外部符号 _compress2 在函数中引用...
错误 LNK2019:未解析的外部符号 _crc32 在函数中引用....

我使用 dumpbin 从这个 zlibstat.lib 转储符号列表

x86:

00B 00000000 SECT4 notype () 外部 | _解压缩@16
029 000024F0 SECT5 notype () 静态 | _compress_block
00B 00000000 SECT4 notype () 外部 | _compress2@20
00F 000000C0 SECT4 notype () 外部 | _压缩@16
010 000000E0 SECT4 notype () 外部 | _compressBound@4

x64:

00A 00000000 SECT4 notype () 外部 |解压
00D 00000000 SECT5 notype 静态 | $pdata$解压缩
010 00000000 SECT6 notype 静态 | $unwind$解压缩
050 00002E50 SECT5 notype () 静态 |压缩块
051 000000B4 SECT6 notype 静态 | $pdata$compress_block
052 00000078 SECT7 notype 静态 | $unwind$compress_block
00A 00000000 SECT4 notype () 外部 |压缩2
00D 00000000 SECT5 notype 静态 | $pdata$压缩2
010 00000000 SECT6 notype 静态 | $展开$压缩2
015 00000150 SECT4 notype () 外部 |压缩
016 0000000C SECT5 notype 静态 | $pdata$压缩
017 00000008 SECT6 notype 静态 | $展开$压缩
019 000001A0 SECT4 notype () 外部 |压缩绑定(bind)

如果将 zlib 的代码添加到我的项目中,它工作正常..

尝试将其与库链接时我做错了什么?
我使用的是 64 位机器,配置平台是 win32.. 我尝试使用 x64 但没有工作..

最佳答案

对于遇到这个问题的任何人:
几分钟前我自己刚刚解决了这个问题,我个人认为这是 1.2.8 源代码中的一个小错误。 1.2.8 版本包含一个用于构建 zlibstat.lib 的 VS2010 项目,虽然人们期望给出名称的静态库文件,但定义了宏 ZLIB_WINAPI 以生成动态链接的 lib 文件。

所以事不宜迟:在 VS2010 中编译 zlibstat.lib :
只需转到项目的属性,转到 C/C++ -> Preprocessor 并从 ZLIB_WINAPI 中删除 Preprocessor Definitions

10-08 08:49