我想使用 ctypes 在我的 python 代码中包装一个 dll 库。我想输入一个以 NULL 结尾的字符串数组。在我的 python 代码中,一个 ctype 数组由
L = ['foo','bar', None] # to get a NULL terminated array
arr = (ctypes.c_char_p * 3)(*L)
lib.myfunc(None, arr)
在 myfunc.c 中,我有
void myfunc(char* p1, char** p2){
printf("%p\n", (void *) p1);
printf("%s\n", *p2);p2++;
printf("%s\n", *p2);p2++;
printf("%p\n", (void *) p2);
}
如果我运行 python 代码,我会得到
(nil)
foo
bar
0x1eb8150
这意味着第一个指针(即 None )被正确识别为 NULL 指针。但是 p2 指向的第三个(最后一个)项目不是 NULL。
在这种情况下有什么问题?