方法映射表是PyMethodDef結構的數組,訪問方法在該方法中映射表不暴露與ctypes的
struct PyMethodDef {
char *ml_name;
PyCFunction ml_meth;
int ml_flags;
char *ml_doc;
};
其中ml_name是在解釋器訪問的功能的名稱(即,GC .collect()),ml_meth是上一節中所描述的功能,ml_flags的指示哪個ml_meth使用簽名和ml_doc的是該函數的文檔字符串的地址。
現在,假設我想從gcm接口沒有公開的gcmodule.c中訪問gc_list_append。
我已經試過如下:
pythonapi.PyImport_ImportModule("gcmodule")
或
pythonapi.PyImport_ImportModule(ctypes.c_wchar("gcmodule"))
希望參考返回可用於訪問未曝光的方法,但在這兩種情況下,我得到的錯誤:
ImportError: No module named 'g'
或
TypeError: one character unicode string expected
任何想法如何通過ctypes/pythonapi訪問未暴露的函數或數據結構?
也許'gc_list_append'是一個隨機的例子,但至少從2.4開始沒有使用。 – eryksun