【发布时间】:2019-07-08 04:13:42
【问题描述】:
我尝试使用 ctypes 从 Python3 中的 C func 获取数组,失败。
系统为macOS Mojave 10.14.5,Python3版本为3.7.3。
这里是 C 代码:
#include "stdlib.h"
#include "stdio.h"
int* func(int num){
int *result = (int *)malloc(num*sizeof(int)), i=num ;
while (i-->0){
result[i] = num-i;
printf("%d:%d\n",i, num-i);
}
return result;
}
这里是 Python3 代码: 从 ctypes 导入 *
dll = CDLL('./test.so')
func = dll.func
func.argtypes = [c_int]
func.restypes = POINTER(c_int*12)
res = func(12)#Here res is an int
res = cast(res, POINTER(c_int*12)).contents
for i in res:
print(i)#Segmentation fault: 11
我除了可以将结果转换为numpy.ndarray。
【问题讨论】:
标签: python c python-3.x