我在Rust项目中使用libz_sys板条箱,我有以下代码(断章取义):
let mut in_data = data.to_owned();
let mut next_out = Vec::with_capacity(in_data.len());
let msg = CString::new("").unwrap();
let mut state = mem::uninitialized();
let mut zstream = libz_sys::z_stream {
next_in: in_data.as_mut_ptr(),
avail_in: 0,
total_in: 0,
next_out: next_out.as_mut_ptr(),
avail_out: 0,
total_out: 0,
msg: msg.into_raw(),
state: &mut state,
zalloc: mem::uninitialized(),
zfree: mem::uninitialized(),
opaque: mem::uninitialized(),
data_type: 0,
adler: 0,
reserved: 0,
};
match libz_sys::inflateInit_(&mut zstream, libz_sys::zlibVersion(), data.len() as raw::c_int) {
libz_sys::Z_OK => (),
e => return Err(format!("Error decoding idat: Error code {}", e))
}
然而,当我运行此代码时,
inflateInit_
正在返回错误代码-6:Z_VERSION_error,这表示zlib。h版本与链接的libz版本不匹配。有人知道这是否是板条箱的预期错误或如何修复吗?libz_sys板条箱没有文档,但是我不能使用像flat2这样的更高级别板条箱,因为我需要向libz传递压缩选项的能力。如果相关的话,我正在OSX10.11和Rust1.7上开发。