为什么我在链接到 zlib.lib 时收到错误 LNK2001?

问题描述 投票:0回答:4

我正在开发一个已经包含 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() 函数。头文件仍然包含它们,这是误导性的。

c++ visual-studio gzip
4个回答
5
投票

我抓住了这里的一个,让 zlib 在 Windows 中构建。 如果您也这样做了,您可能忘记了在包含 zlib.h 之前#define ZLIB_WINAPI


2
投票

您还需要将 zlib.lib 添加到项目的库中: 项目属性->链接器->输入->附加依赖项。


2
投票

当构建停止时,按住 Ctrl 键单击 URL 以查看更详细的日志形式,并检查传递给链接器的实际命令行。 这至少会告诉您链接到 zlib 的选项是否受到尊重。 您可能会得到其他有用的诊断输出。 一种可能性可能是架构不同(例如,您正在构建 x64,但库是 x86)


0
投票

事实证明我使用的静态库中删除了 gz() 函数。头文件仍然包含它们,这是误导性的。

© www.soinside.com 2019 - 2024. All rights reserved.