在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() )