Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中检索从.so导出的C函数返回的'char*'_Python_C - Fatal编程技术网

在Python中检索从.so导出的C函数返回的'char*'

在Python中检索从.so导出的C函数返回的'char*',python,c,Python,C,我得到了一个liba.so包含一个函数say_hi() 在Python中,我通过ctypes访问了liba.so >>>liba = ctypes.CDLL("./liba.so") >>>liba.say_hi() 16422018 如何在Python中检索liba.say_hi()返回的字符串“hello,world” PS 除了重新键入之外,还有其他方法吗?这能回答您的问题吗 Python ctypes模块的文档提供类型转换功能。例如: 表示指向以零结

我得到了一个
liba.so
包含一个函数
say_hi()

在Python中,我通过
ctypes
访问了
liba.so

>>>liba = ctypes.CDLL("./liba.so")
>>>liba.say_hi()
16422018
如何在Python中检索liba.say_hi()返回的字符串
“hello,world”

PS


除了重新键入之外,还有其他方法吗?

这能回答您的问题吗


Python ctypes模块的文档提供类型转换功能。例如:

表示指向以零结尾的字符串时的C char*数据类型。对于也可能指向二进制数据的通用字符指针,必须使用指针(c_char)。构造函数接受整数地址或字节对象

所以试试这个:

ctypes.c_char_p( liba.say_hi() )
PS:它构建不可变的字符串。对于可变的,请查看
页面上还有一些自我描述的例子。

事实上,它有。:-,除了重新键入外,还有其他方法吗?为什么有必要?Python不能从C推断类型。最好的答案就是告诉Python返回类型是什么。在几乎所有情况下,这可能是最好的方法。谢谢,只是在寻找其他方法来完成这项工作,似乎这是最好的方法。
ctypes.c_char_p( liba.say_hi() )