我尝试将我的文件与zlib库链接,但仍然得到:未定义对“deflateInit_”的引用。
我目前正在使用CLion,已经从主页下载了zLib文件并将其添加到项目中。这是我的CmakeLists.txt的外观
cmake_minimum_required(VERSION 3.10) project(GzipTest)
set(CMAKE_CXX_STANDARD 11)
include_directories(ZLIB zlib-1.2.11)
add_executable(GzipTest main.cpp zlib-1.2.11/zlib.h)
代码(从zpipe. c复制):
include "iostream"
include "zlib.h"
include "iostream"
define CHUNK 1639
FILE *fp;
int def(FILE *source, FILE *dest, int level){
int ret, flush;
unsigned have;
z_stream strm;
unsigned char in[CHUNK];
unsigned char out[CHUNK];
// Allocate Deflate state
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
ret = deflateInit(&strm, level);
if (ret != Z_OK){
return ret;
}
}
int main(){
fp = fopen("inputFile.txt", "r");
if (fp == nullptr){
perror("Could not open data");
exit(EXIT_FAILURE);
}
def(fp, fp, 1);
}
还缺什么呢?先谢谢了
2条答案
按热度按时间falq053o1#
你必须链接到zlib。
如果您使用:
然后,您应该:
也不要将头文件添加到源文件中:
k2arahey2#
看起来这篇老文章吸引了很多人。链接zlib和CMake的解决方案是:
1.下载zlib(如果在Linux上)
然后按照马蒂厄的建议。
1.或者像1中那样下载zlib并执行以下操作:
1.或者从他们的主页下载zlib:https://zlib.net/,然后将其保存在“deps”文件夹中。使用以下命令修改zlib文件夹中的CMakeList
并在主CMakeList中,执行