我正在使用zlib 1.2.11。当我使用GZSEEK的偏移大于签名的INT范围(2^32的一半)时;我得到bytes_read为-1。有什么方法可以使用64位偏移。
这是gzlib.c
的gzseek64定义的摘录。if (state->mode == GZ_READ) {
n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?(unsigned)offset : state->x.have;
state->x.have -= n;
state->x.next += n;
state->x.pos += n;
offset -= n;
}
这里n是未签名的int,只能容纳32位...即使我的偏移是64位,n将如何保持该价值。...如果我错了,请纠正我
更多发现:宣布宏Z_LARGE64 ... GZSEEK接受64位偏移,但...当我通过一个大偏移量时,返回的字节是a 大负值,我认为这与 __ int64有关> 用Z_LARGE64
编译库,然后使用该lib来构建您的应用程序。在应用程序中包括#include "zlib.h"
之前的Z_LARGE64
。然后使用gzseek64()