[英]retrieve a `char *` returned from C function exported from .so in Python
我有一個liba.so
包含函數say_hi()
char *say_hi()
{
return "hello, world";
}
在Python中,我通過ctypes
訪問了liba.so
,
>>>liba = ctypes.CDLL("./liba.so")
>>>liba.say_hi()
16422018
如何在Python中檢索由liba.say_hi()
返回的字符串"hello, world"
?
PS
除了restype
,還有其他任何方式嗎?
Python ctypes-modules的文檔提供了類型轉換函數。 例如。 c_char_p :
當它指向以零結尾的字符串時表示C char *數據類型。 對於也可能指向二進制數據的通用字符指針,必須使用POINTER(c_char)。 構造函數接受整數地址或字節對象。
試試這個:
ctypes.c_char_p( liba.say_hi() )
PS:它構建不可變的字符串。 對於可變的,請查看create_string_buffer頁面上還有一些自描述的exameples。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.