我正在尝试使用ctypes
。我对操作包含数组的C结构感兴趣。考虑以下my_library.c
#include <stdio.h>
typedef struct {
double first_array[10];
double second_array[10];
} ArrayStruct;
void print_array_struct(ArrayStruct array_struct){
for (int i = 0; i < 10; i++){
printf("%f\n",array_struct.first_array[i]);
}
}
假设我在Python的一个共享库my_so_object.so
中编译了它,我可以这样做
到目前为止还不错:我已经创建了正确的类型,一切看起来都很好。但随后:
myLib.print_array_struct(x)
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
>>> 0.000000
我显然漏掉了什么。已识别ArrayStruct
类型(否则调用myLib.print_array_struct(x)
将引发错误),但未正确初始化。在
代码有两个问题(正如我在评论中所说):
print_array_struct.argtype
-哪个不正确ctypes.c_int
(int)的有关详细信息,请选中[Python 3]: ctypes - A foreign function library for Python。
我修改了您的Python代码,以纠正上述错误(以及其他一些小问题)。在
代码.py:
输出:
相关问题 更多 >
编程相关推荐