如何傳遞乙個陣列給動態庫中的函式,並通過傳遞的陣列返回字串呢?
這裡演示一種間接的方法。不知道有沒有更直接的方法?
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...