2016-02-18 53 views
-1

當我嘗試初始化zlib流來壓縮一些數據時,我得到Z_VERSION_ERROR返回。該手冊說,如果zlib庫版本與調用者假定的版本不兼容,則返回Z_VERSION_ERROR。我不知道如何解決這個問題,似乎我的系統上只有一個版本的zlib。無法初始化zlib deflate Z_VERSION_ERROR

示例代碼

#include "zlib.h" 

... 

printf("VERSION %s\n", ZLIB_VERSION); 

int rc = 0; 
z_stream strm; 
strm.zalloc = Z_NULL; 
strm.zfree = Z_NULL; 
strm.opaque = Z_NULL; 
rc = deflateInit(&strm, -1); 

if(rc != Z_OK){ 
    printf("Error %d\n", rc); 
    return; 
} 

回報

VERSION 1.2.8 
Error -6 

示例程序zpipe.c有提及Z_VERSION_ERROR返回「如果zlib.h的版本和鏈接的庫的版本做評論不匹配「,所以我檢查了鏈接版本和zlib.h文件,他們都說1.2.8。

LDD

ldd output 
libz.so.1 => /usr/lib/libz.so.1 (0x00007fe9b4c5c000) 
... 

libz.so.1是符號鏈接

file /usr/lib/libz.so.1 
/usr/lib/libz.so.1: symbolic link to libz.so.1.2.8 

zlib.h

cat /usr/include/zlib.h |grep ZLIB_VERSION 
#define ZLIB_VERSION "1.2.8" 

回答

0

如果z_stream結構的尺寸由這也發生在C程序中使用zlib.h中的描述與編譯的z_stream結構libz.so.1的大小不匹配。

是否有多種方法可以在機器上編譯程序,以改變任何數據類型的大小,如整數或指針?

+0

我發現了一個解決方案,我沒有得到確切的發生了什麼,但我的源文件中的其他地方包含了assimp庫,它還取決於zlib,#including zlib.h,assimp包含哪個固定Z_VERSION_ERROR。 – ktfh

+0

感謝zlib – ktfh