Python używa ctypów do przekazywania tablicy char * i wypełniania wyników

Próbuję użyć ctypes do utworzenia tablicy char * w pythonie, aby przekazać ją do biblioteki w celu wypełnienia łańcuchami. Oczekuję 4 ciągów z powrotem nie więcej niż 7 znaków długości każdy.

Mój kod pyłu wygląda tak

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

Kiedy próbuję uruchomić ten kod, otrzymuję błędy segmentacji. Stworzyłem test z C, który działa idealnie, ale w Pythonie muszę ustawić niepoprawnie tablicę wskaźników lub coś takiego. Wydaje się, że dociera do drugiego węzła w pętli, a następnie ma problem, jaki widziałem z wypuszczaniem danych do linii poleceń. Każdy wgląd byłby bardzo mile widziany.

questionAnswers(3)

yourAnswerToTheQuestion