Python, использующий ctypes для передачи массива char * и заполнения результатов
Я пытаюсь использовать ctypes для создания массива char * в python для передачи в библиотеку для заполнения строками. Я ожидаю, что 4 строки возвращают не более 7 символов в длину.
Мой код Py выглядит так
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]);
}
}
Я продолжаю получать ошибки сегментации, когда пытаюсь запустить этот код. Я создал тест на C, который отлично работает, но в Python я должен неправильно настроить массив указателей или что-то в этом роде. Кажется, что он попадает на второй узел в цикле, а затем возникает проблема, как я видел, выплевывая данные в командной строке. Любое понимание будет высоко ценится.