我正在尝试使用 ctypes 在 python 中创建一个 char * 数组以传递给库以填充字符串。我期待 4 个字符串返回,每个字符串的长度不超过 7 个字符。
我的 py 代码看起来像这样
测试库.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)
库文件
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 中我必须错误地设置指针数组或其他东西。它似乎到达了循环中的第二个节点,然后出现了问题,正如我从将数据吐出到命令行中看到的那样。任何见解将不胜感激。