我有一个原型如下的功能
//opaque struct
struct mosquitto;
struct mosquitto *mosquitto_new(const char *id, bool clean_session, void *obj);
Run Code Online (Sandbox Code Playgroud)
在我的c代码中,我将其称为如下.
struct mosquitto *m = mosquitto_new(buf, true, NULL);
Run Code Online (Sandbox Code Playgroud)
现在我想在我的防锈代码中调用上面的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;
Run Code Online (Sandbox Code Playgroud)
当我试图调用上面的API时,我在第三个参数上遇到了不匹配.
let s = CString::new("ravi").unwrap();
let mqtt = mosquitto::mosquitto_new(s.as_ptr(), 1, ptr::null());
Run Code Online (Sandbox Code Playgroud)
如何将NULL传递给*mut c_void?
奖金问题:如何将生锈结构传递给*mut c_void?
oli*_*obk 18
该ptr::null()函数返回一个*const T,你想要什么ptr::null_mut()功能,因为参数的函数类型*mut ::libc::c_void.
要传递实际值,请查看在FFI中使用c_void的答案
| 归档时间: |
|
| 查看次数: |
7009 次 |
| 最近记录: |