我有一个C函数返回字符串(char *),我们称之为foo()
。
在python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo
。
如何同时获取指针和字符串?如果我喜欢这样:
fooFunc = foolib.foo
fooFunc.restype = c_char_p
r = fooFunc()
然后我得到了字符串,但没有指针。如果我在没有指定restype
的情况下执行此操作,则会得到一个似乎是正确地址的int,但每当我尝试使用c_char_p(<address>)
将其强制转换为sting时,它就会因为分段错误而崩溃。
答案 0 :(得分:1)
我很惊讶您不能将c_char_p
实例传回第二个函数,但我手边没有工具来验证它失败的原因。
但是,作为替代方案,我相信你可以试试:
restype
指定为简单指针(c_void_p
)ctypes.string_at
构建字符串