簡體   English   中英

檢索從Python中從.so導出的C函數返回的`char *`

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM