【问题标题】:Cffi and char** as an argumentCffi 和 char** 作为参数
【发布时间】:2025-12-08 13:25:01
【问题描述】:

我在 Python 中有以下代码,使用 cffi:

from cffi import FFI

ffi = FFI()
ffi.cdef("int somefunc(char** data);")

lib = ffi.dlopen("somelib")

现在,我想用char** 调用somefunc 并将数据传给Python。 somefunc 实际上填充了data,所以:

data = ffi.new("char**", ffi.NULL)
lib.somefunc(data)

那么我现在应该如何将data 变量的结果转换为 Python 字符串?有什么想法吗?

谢谢!

【问题讨论】:

  • 提示:在 C 中,char**char[][] 基本上是同一个东西。
  • 另外,将其设为char **data,而不是char** data -- 前者在您在同一行上定义多个变量时的行为方式并不令人惊讶。

标签: python c python-cffi cffi


【解决方案1】:

data[0]data[n] 为您提供数组中的第 n 个项目。 (如果只有一个字符串,那将是data[0];我认为这是基于您问题中的详细信息的情况。)这仍然是char *,但是您可以使用@987654325 将其解释为以空字符结尾的字节字符串@。像往常一样,您可能必须使用正确的编码将该字节字符串解码为普通的 unicode 字符串。

【讨论】:

    最近更新 更多