在項目開發中遇到了,python需要去調用一個動態鏈接庫dll中的c++方法。這個方法的參數為一個指針類型的參數,一個bool類型參數,
在python中並未對數字類型進行區分。
int LP_Agc ( double * a, bool b= true )
所以在調用這個方法之前,
第一步要將python中的類型轉換為c語言類型。
這個應該是python自帶的
a = c_double(1.0) #同理 b = c_double(True) #python中還有c_int(),c_float()等。需要什么用什么。可以在 _init_.py中找到這些方法。
第二步 ,lgc中的第一個參數為 double類型的指針類型。。
在pythong中同樣有使用指針的方法。pointer()
pcdi = pointer(c_double(1.0))
即:
dll.LP_Agc(pointer(c_double(1.0),c_bool(True)) 就可以成功調用方法。
byref(n)返回的相當於C的指針右值&n,本身沒有被分配空間:所以他只能作為參數。
pointer返回的相當於指針左值T* p=&n,可以改變,可以取地址: