加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 需要ctypes char *指针

发布时间:2020-12-20 13:32:25 所属栏目:Python 来源:网络整理
导读:我有一个C函数返回字符串(char *),让我们称之为foo(). 在 python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo. 如何获得指针和字符串本身?如果我喜欢这样: fooFunc = foolib.foofooFunc.restype = c_char_pr = fooF
我有一个C函数返回字符串(char *),让我们称之为foo().
在 python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo.

如何获得指针和字符串本身?如果我喜欢这样:

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

然后我得到字符串,但不是指针.如果我在没有指定restype的情况下这样做,我得到一个似乎是正确地址的int,但每当我尝试使用c_char_p(< address>)将其强制转换为sting时,它就会崩溃并出现分段错误.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读