Rost FFI. Umwandlung in void-Zeiger

Habe ich eine Funktion, die hat der Prototyp, wie weiter unten

//opaque struct
struct mosquitto;

struct mosquitto *mosquitto_new(const char *id, bool clean_session, void *obj);

In meinem c-code, nenne ich es wie folgt.

struct mosquitto *m = mosquitto_new(buf, true, NULL);

Nun möchte ich nennen, die über API in meine Rost-code. Rost-bindgen generiert die folgenden Bindungen

pub enum Struct_mosquitto { }
pub fn mosquitto_new(id: *const ::libc::c_char, clean_session: u8, obj: *mut ::libc::c_void) -> *mut Struct_mosquitto;

Wenn ich versuche zu nennen, die oben genannten API, ich bin immer ein mismatch bei der 3. argument.

let s = CString::new("ravi").unwrap();
let mqtt = mosquitto::mosquitto_new(s.as_ptr(), 1, ptr::null());

Wie gebe ich NULL zu *mut c_void?

BONUS-FRAGE: Wie pass Rost struct zu *mut c_void ?

InformationsquelleAutor tez | 2015-07-08
Schreibe einen Kommentar