在我的C代碼,我有:ctypes的 - 通過一個結構的指針另一個結構
typedef struct{
int info1;
int info2;
MoreData* md;
} BasicData;
typedef struct{
int extinfo[100];
char stuff[100];
} MoreData;
現在我有一個C庫函數,它接受BasicData作爲參數,我想從Python中調用它。 要做到這一點,我構建一個ctypes類:
class BasicData(Structure):
_fields_ = [("info1", c_int),
("info2", c_int),
("md", ??????)]
我的問題是我該怎麼填進????空間能夠將這個結構傳遞給C函數(或者我需要完全不同的東西?)。 MoreData僅用於計算,我不需要在Python代碼中讀取它,因此爲它分配內存將從C庫級別處理。我只需要傳遞正確的指針類型的BasicData結構。
我讀的問題是'BasicData'結構由ctypes分配並傳遞給一個函數。在那種情況下,它至少需要一個'c_void_p'。如果確實定義了'MoreData'結構,那麼該字段將是'(「md」,POINTER(MoreData))'。 – eryksun
同意,取決於是否有任何C代碼訪問'md' – vbraun