4

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

如何获取指针和字符串本身?如果我这样做:

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

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

4

1 回答 1

1

我很惊讶你不能只将c_char_p实例传回第二个函数,但我手头没有工具来验证它为什么会失败。

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

  • 将 指定restype为简单指针 ( c_void_p)
  • 当你想操作字符串时,使用ctypes.string_at来构建它
  • 将最初返回的指针传递给释放函数。
于 2013-01-04T09:34:25.990 回答