【发布时间】:2015-09-26 22:12:31
【问题描述】:
我有一个原型如下的函数
//opaque struct
struct mosquitto;
struct mosquitto *mosquitto_new(const char *id, bool clean_session, void *obj);
在我的 c 代码中,我将其称为如下。
struct mosquitto *m = mosquitto_new(buf, true, NULL);
现在我想在我的 rust 代码中调用上述 API。 rust-bindgen 生成了以下绑定
pub enum Struct_mosquitto { }
pub fn mosquitto_new(id: *const ::libc::c_char, clean_session: u8, obj: *mut ::libc::c_void) -> *mut Struct_mosquitto;
当我尝试调用上述 API 时,我在第三个参数处遇到不匹配的情况。
let s = CString::new("ravi").unwrap();
let mqtt = mosquitto::mosquitto_new(s.as_ptr(), 1, ptr::null());
如何将 NULL 传递给 *mut c_void?
奖励问题:如何将 rust 结构传递给 *mut c_void ?
【问题讨论】: