我正在使用ctypes在Python中实现C++函数。 C++函数应该返回一个指向数组的指针。不幸的是,我还没有想出如何在Python中访问数组。我试过numpy.frombuffer,但那并不成功。它只是返回一个任意数字的数组。显然我没有正确使用它。这里是尺寸为10的阵列的简单的例子:function.cpp的如何使用ctypes将数组从C++函数返回到Python
内容:wrapper.py的
extern "C" int* function(){
int* information = new int[10];
for(int k=0;k<10;k++){
information[k] = k;
}
return information;
}
内容:
import ctypes
import numpy as np
output = ctypes.CDLL('./library.so').function()
ArrayType = ctypes.c_double*10
array_pointer = ctypes.cast(output, ctypes.POINTER(ArrayType))
print np.frombuffer(array_pointer.contents)
要编译我使用C++的文件:
g++ -c -fPIC function.cpp -o function.o
g++ -shared -Wl,-soname,library.so -o library.so function.o
你有我有什么做访问在Python数组值有什么建议?
当然,我忘了导入一些特定的ctypes功能,如c_double和POINTER。我只是忘了在这里添加它们。 – dolby 2013-02-15 02:38:38