我想爲使用ctypes的C庫做一個python包裝。該庫具有需要指向要傳遞的結構的指針的函數,該指針充當未來調用的句柄。通過ctypes中其他結構的指針傳遞結構
該結構具有指向另一個內部結構的指針,該內部結構還具有指向其他結構的指針。
typedef struct varnam {
char *scheme_file;
char *suggestions_file;
struct varnam_internal *internal;
} varnam;
varnam_internal
該結構具有指針SQLite數據庫等等
struct varnam_internal
{
sqlite3 *db;
sqlite3 *known_words;
struct varray_t *r;
struct token *v;
...
}
我試圖根據this SO回答忽略varnam_internal結構。像
class Varnam(Structure):
__fields__ = [("scheme_file",c_char_p),
("suggestions_file",c_char_p),("internal",c_void_p)]
但是這樣的東西似乎並沒有工作,因爲我覺得庫需要分配varnam_internal
,才能正常運行。
我應該在Python中實現所有的依賴結構嗎? ctypes適合包裝這樣的圖書館嗎?我已經閱讀了像Cython這樣的替代品,但是我沒有使用Cython的經驗,所以這是可行的嗎?
謝謝。你是對的,我創建了一個Varnam類的指針,並將其用於該函數,而不是指向指針的指針。現在它完美地工作。 – stc043 2014-09-14 10:32:25