我需要一种使用 ctypes 库将数组从 Python 传递到 char* 的方法到 C 库。
我尝试过的一些方法导致我出现分段错误,另一些则导致垃圾信息。
由于我已经在这个问题上苦苦挣扎了一段时间,我决定写一个小指南,以便其他人可以受益。
有这段C代码:
void passPointerArray(int size, char **stringArray) {
for (int counter=0; counter < size; counter++) {
printf("String number %d is : %s\n", counter, stringArray[counter]);
}
}
我们想使用 ctypes 从 python 调用它(有关 ctypes 的更多信息可以在上一篇文章中找到),因此我们写下以下代码:
def pass_pointer_array():
string_set = [
"Hello",
"Bye Bye",
"How do you do"
]
string_length = len(string_set)
select_type = (c_char_p * string_length)
select = select_type()
for key, item in enumerate(string_set):
select[key] = item
library.passPointerArray.argtypes = [c_int, select_type]
library.passPointerArray(string_length, select)
现在我读到它似乎非常简单,但我很高兴找到传递给 ctypes 的正确类型以避免分段错误......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)