我正在开发一个已经包含 gzip 库的项目,如下所示:
zlib\zlib.h
zlib\zlib.lib
zlib\zconf.h
我想使用此 .lib 中的 gzip 函数,但收到以下错误:
Compress.cpp
Linking...
Compress.obj : error LNK2001: unresolved external symbol _gzclose
Compress.obj : error LNK2001: unresolved external symbol _gzerror
Compress.obj : error LNK2001: unresolved external symbol _gzwrite
Compress.obj : error LNK2001: unresolved external symbol _gzopen
.\Debug/files.exe : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.
链接设置包括:
对象/库模块:zlib.lib
项目选择:
zlib.lib
在使用 gzX() 函数的文件中,它
#include "zlib/zlib.h"
使用这些功能还需要做什么?
谢谢你。
编辑:使用 Visual Studio 6.0 C++
EDIT2:事实证明我使用的静态库中删除了 gz() 函数。头文件仍然包含它们,这是误导性的。
我抓住了这里的一个,让 zlib 在 Windows 中构建。 如果您也这样做了,您可能忘记了在包含 zlib.h 之前#define ZLIB_WINAPI
您还需要将 zlib.lib 添加到项目的库中: 项目属性->链接器->输入->附加依赖项。
当构建停止时,按住 Ctrl 键单击 URL 以查看更详细的日志形式,并检查传递给链接器的实际命令行。 这至少会告诉您链接到 zlib 的选项是否受到尊重。 您可能会得到其他有用的诊断输出。 一种可能性可能是架构不同(例如,您正在构建 x64,但库是 x86)
事实证明我使用的静态库中删除了 gz() 函数。头文件仍然包含它们,这是误导性的。