Python utiliza ctypes para pasar una matriz char * y rellenar los resultados
Estoy tratando de usar ctypes para crear una matriz char * en python que se pasará a una biblioteca para rellenar con cadenas. Espero 4 cadenas de regreso de no más de 7 caracteres cada una.
Mi código de Py se ve así
testlib.py
from ctypes import *
primesmile = CDLL("/primesmile/lib.so")
getAllNodeNames = primesmile.getAllNodeNames
getAllNodeNames.argtypes = [POINTER(c_char_p)]
results = (c_char_p * 4)(addressof(create_string_buffer(7)))
err = getAllNodeNames(results)
lib.cpp
void getAllNodeNames(char **array){
DSL_idArray nodes; //this object returns const char * when iterated over
network.GetAllNodeIds(nodes);
for(int i = 0; i < (nodes.NumItems()); i++){
strcpy(array[i],nodes[i]);
}
}
Sigo obteniendo fallas de segmentación cuando intento ejecutar este código. He creado una prueba de C que funciona perfectamente, pero en Python debo configurar la matriz de punteros de forma incorrecta o algo así. Parece llegar al segundo nodo en el bucle y luego tener un problema, como he visto al escupir datos en la línea de comandos. Cualquier idea sería muy apreciada.