需要ctypes char *指针

时间:2013-01-04 09:03:38

标签: python pointers ctypes

我有一个C函数返回字符串(char *),我们称之为foo()。 在python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo

如何同时获取指针和字符串?如果我喜欢这样:

fooFunc = foolib.foo
fooFunc.restype = c_char_p
r = fooFunc()

然后我得到了字符串,但没有指针。如果我在没有指定restype的情况下执行此操作,则会得到一个似乎是正确地址的int,但每当我尝试使用c_char_p(<address>)将其强制转换为sting时,它就会因为分段错误而崩溃。

1 个答案:

答案 0 :(得分:1)

我很惊讶您不能将c_char_p实例传回第二个函数,但我手边没有工具来验证它失败的原因。

但是,作为替代方案,我相信你可以试试:

  • restype指定为简单指针(c_void_p
  • 如果要操纵字符串,请使用ctypes.string_at构建字符串
  • 将最初返回的指针传递给释放函数。