我正在尝试将我的文件与zlib libray链接,但仍然得到:未定义的对` `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);
}可能会遗漏什么?提前感谢
发布于 2018-11-14 18:56:33
您必须链接到zlib。
如果您使用:
find_package(ZLIB)那么你应该有:
target_link_libraries(GzipTest ZLIB::ZLIB)另外,不要将头文件添加到源文件中:
add_executable(GzipTest main.cpp)发布于 2019-07-04 19:18:10
看起来这个老帖子得到了很多关注。将zlib与CMake链接的解决方案是:
下载zlib的
sudo apt-get install zlib1g-dev
然后按照马修所说的去做。
add_executable(my_executable main.cpp) target_link_libraries(my_executable z)
或者从他们的主页下载
设置(ZLIB_DEPS_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
在主CMakeList中,执行以下操作
add_executable(my_executable main.cpp) add_subdirectory(deps) include_directories(my_executable ${ZLIB_DEPS}) target_link_libraries(my_executable zlib)
https://stackoverflow.com/questions/53298492
复制相似问题