У меня есть матрица в виде массива в C++ и хотел бы передать ее в библиотечную функцию, написанную в Rust. У меня есть что-то вроде этогоКак передать массив FFI в качестве указателя c_void для DMatrix2 nalgebra?
#![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
}
это не компилируется, так как я прохожу c_void
к from_row_vector()
.
Как я могу это сделать правильно?
Матрица представляет собой массив двойников, но я пытаюсь сохранить общий интерфейс, поэтому я могу также вызвать функции, например. Python.
Я не хочу освобождать матрицу при возврате из функции (я хочу заимствовать, а не собственную матрицу).