python從動態庫中返回並輸出字串

2021-09-08 00:09:25 字數 776 閱讀 7786

如何傳遞乙個陣列給動態庫中的函式,並通過傳遞的陣列返回字串呢?

這裡演示一種間接的方法。不知道有沒有更直接的方法?

1 動態庫中的函式定義:

struct ss ;

void getstring(struct ss *p)

編譯生成dll.so:  gcc -fpic -o2 -shared dll.c -o dll.so

2 python中呼叫例項:

from ctypes import *

class ss(structure):

_fields_=[

("name

", c_byte*10),

("age

", c_int),

]#name定義為c_byte*10, 儲存的是interger,想要輸出為字串比較麻煩

filename = "

/home/primax/desktop/work/test/python/dll.so

"lib = cdll.loadlibrary(filename)

t = ss()

lib.getstring(pointer(t))

tt = create_string_buffer(11)

memmove(tt, byref(t), 10)

temp = tt.value.__str__()[2:-1]

print(temp)

列印輸出:

hello dll.

從動態SQL中返回值

declare transactorid int set transactorid 0 print transactorid execsp execute sqln select transactorid 68 n transactoridint transactorid execsp execut...

C 反射動態呼叫dll中的方法,並返回結果

最近在看工廠開發模式,發現用到了反射,之前只聽說過也沒怎麼用過 所以花了點時間重新溫習了一遍 反射的作用是動態的載入某個dll 程式集 並執行該程式集中的某個方法,並返回結果 當然也可以給該方法傳遞引數 直接上 namespace assembly name 上邊寫乙個測試類,命名空間是assemb...

C 反射動態呼叫dll中的方法,並返回結果

最近在看工廠開發模式,發現用到了反射,之前只聽說過也沒怎麼用過 所以花了點時間重新溫習了一遍 反射的作用是動態的載入某個dll 程式集 並執行該程式集中的某個方法,並返回結果 當然也可以給該方法傳遞引數 namespace assembly name 上邊寫乙個測試類,命名空間是assembly n...