【问题标题】:ctypes char* pointer needed需要 ctypes char* 指针
【发布时间】:2013-01-04 09:03:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python pointers ctypes


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2012-07-15
      相关资源
      最近更新 更多