我得到了一个包含函数liba.so
的{{1}},
say_hi()
在Python中,我通过char *say_hi()
{
return "hello, world";
}
,
liba.so
ctypes
如何在Python中检索>>>liba = ctypes.CDLL("./liba.so")
>>>liba.say_hi()
16422018
返回的字符串"hello, world"
?
PS
除了liba.say_hi()
,还有其他任何方式吗?
答案 0 :(得分:3)
答案 1 :(得分:2)
Python ctypes-modules的文档提供了类型转换功能。例如。 c_char_p:
表示指向以零结尾的字符串的C char *数据类型。对于也可能指向二进制数据的通用字符指针,必须使用POINTER(c_char)。 构造函数接受整数地址或字节对象。
所以试试这个:
ctypes.c_char_p( liba.say_hi() )
PS:它构建了不可变的字符串。对于可变的,请查看create_string_buffer 页面上还有一些自我描述性的exameples。