我对Rust很陌生。如何从Rust函数返回一个可以在Python中使用的String
?
这是我的Rust实现:
use std::ffi::CString;
#[no_mangle]
pub extern fn query() -> CString {
let s = CString::new("Hello!").unwrap();
return s;
}
以及调用它的Python代码:
from ctypes import cdll, c_char_p
lib = cdll.LoadLibrary("target/release/libtest.so")
result = lib.query()
print(c_char_p(result).value)
当运行时出现分段错误。
编辑:使用 Vladimir Matveev 的 Rust 代码,我能够将其与我的 Python 代码更改后使其正常工作:
from ctypes import *
lib = cdll.LoadLibrary("target/release/libtest.so")
lib.query.restype = c_char_p
result = lib.query()
print cast(result, c_char_p).value
lib.free_query(result)