私は自分のファイルを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);
}
何が欠けているのでしょうか?前もって感謝します
この古い投稿は多くの注目を集めているようです。 zlibをCMakeとリンクするためのソリューションは次のいずれかです。
Linuxの場合、zlibをダウンロードするには
Sudo apt-get install zlib1g-dev
そして、マシューが提案したことを追った。
または、1のようにzlibをダウンロードして実行します。
add_executable(my_executable main.cpp)
target_link_libraries(my_executable z)
または、彼らのホームページからzlibをダウンロードしてください: https://zlib.net/ そして、それを「deps」フォルダに保存します。 zlibフォルダーのCMakeListを次のように変更します。
set(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)