Я пытался использовать ctypes для получения массива из функции C в Python3, не удалось.
Система 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
I, кроме результата, можно преобразовать в numpy.ndarray.