Ich habe eine Matrix in Form eines Arrays in C++ und möchte es an eine in Rust geschriebene gemeinsame Bibliothek übergeben. Ich habe so etwas wie diesesWie kann ich ein FFI-Array als c_void-Zeiger an Nalgebras DMatrix2 übergeben?
#![crate_type = "dylib"]
extern crate libc;
use libc::c_void;
extern crate nalgebra as na;
use na::DMatrix2;
#[no_mangle]
pub extern "C" fn rust_fn(p_data: *const c_void, sizex: usize, sizey: usize) {
let matrix = DMatrix2::from_row_vector(sizey, sizex, p_data);
// Do something usefull with the matrix
}
dies nicht kompilieren, da ich eine c_void
-from_row_vector()
passieren.
Wie kann ich das richtig machen?
Die Matrix ist eine Reihe von Doppel, aber ich versuche, die Schnittstelle generisch zu halten, so kann ich auch die Funktionen von z. Python.
Ich möchte die Matrix nicht freigeben, wenn ich von der Funktion zurückkomme (ich möchte ausleihen, die Matrix nicht besitzen).