C-API を介してモジュールにメソッドを動的に追加するにはどうすればよいですか? 登録する必要がある多くの関数があり、それらは同じ配列にありません。ドキュメントには可能であると書かれているので、モジュールを NULL メソッド テーブルで初期化できると思います。
PyObject *mymod = Py_InitModule("my", NULL);
メソッドを 1 つずつ追加する関数の名前は何ですか。
C-API を介してモジュールにメソッドを動的に追加するにはどうすればよいですか? 登録する必要がある多くの関数があり、それらは同じ配列にありません。ドキュメントには可能であると書かれているので、モジュールを NULL メソッド テーブルで初期化できると思います。
PyObject *mymod = Py_InitModule("my", NULL);
メソッドを 1 つずつ追加する関数の名前は何ですか。
基本的に、最初にモジュール dict を取得する必要があります。
d = PyModule_GetDict(m);
モジュール名を PyString オブジェクトに保存します。
n = PyString_FromString("modname");
次に、PyMethodDef構造体を適切に設定ml
し、新しい callable を作成します。
v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);
関数名をキーにしたこの callable をモジュール dict に追加します。
PyDict_SetItemString(d, ml->ml_name, v);
関連するすべてのエラーチェックを明らかにスキップしました。
これはすべて、何をするかについての私の解釈ですPy_InitModule4
(はデフォルト引数でPy_InitModule
呼び出すマクロです)。Py_InitModule4