Jak zwrócić tablicę z funkcji C ++ do Pythona przy użyciu typów

Używam ctypes do implementacji funkcji C ++ w Pythonie. Funkcja C ++ powinna zwrócić wskaźnik do tablicy. Niestety nie wiem, jak uzyskać dostęp do tablicy w Pythonie. Próbowałem numpy.frombuffer, ale to się nie udało. Właśnie zwrócił tablicę dowolnych liczb. Oczywiście nie użyłem go poprawnie. Oto prosty przykład z tablicą o rozmiarze 10:

Zawartość function.cpp:

extern "C" int* function(){
int* information = new int[10];
for(int k=0;k<10;k++){
    information[k] = k;
}
return information;
}

Zawartość wrapper.py:

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)

Aby skompilować plik C ++ używam:

g++ -c -fPIC function.cpp -o function.o
g++ -shared -Wl,-soname,library.so -o library.so function.o

Czy masz jakieś sugestie, co muszę zrobić, aby uzyskać dostęp do wartości tablicy w Pythonie?

questionAnswers(2)

yourAnswerToTheQuestion