我有一个Rust函数,返回array
,我想在Python
中使用这个数组,它可能是list
或numpy.array
,这并不重要.
我的Rust 函数如下所示:
#[no_mangle]
pub extern fn make_array() -> [i32; 4] {
let my_array: [i32; 4] = [1,2,3,4];
return my_array;
}
我试着用Python这样调用它:
In [20]: import ctypes
In [21]: from ctypes import cdll
In [22]: lib = cdll.LoadLibrary("/home/user/RustStuff/embed/target/release/libembed.so")
In [23]: lib.make_array.restype = ctypes.ARRAY(ctypes.c_int32, 4)
In [24]: temp = lib.make_array()
In [25]: [i for i in temp]
Out[25]: [1, 2, -760202930, 32611]
我做错了什么?为什么我的输出不是[1,2,3,4]
?为什么我的前两个元素是正确的,而另外两个元素充满了垃圾?
我在ctypes.ARRAY
上找不到任何好的文档,所以我只 Select 了看起来正确的,所以这可能是问题所在.