Python verwendet ctypes, um ein char * -Array zu übergeben und die Ergebnisse aufzufüllen

Ich versuche, ctypes zu verwenden, um ein char * -Array in Python zu erstellen, das an eine Bibliothek zum Auffüllen mit Zeichenfolgen übergeben wird. Ich erwarte, dass 4 Zeichenketten nicht länger als 7 Zeichen sind.

Mein PY-Code sieht so aus

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]);
    }
}

Ich bekomme immer wieder Segmentierungsfehler, wenn ich versuche, diesen Code auszuführen. Ich habe einen Test aus C erstellt, der perfekt funktioniert, aber in Python muss ich das Zeigerarray falsch oder so einrichten. Es scheint zum zweiten Knoten in der Schleife zu gelangen und dann ein Problem zu haben, wie ich beim Ausspucken von Daten in die Befehlszeile gesehen habe. Jede Einsicht wäre sehr dankbar.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage