2011-07-03 7 views
1

C-APIを使用してモジュールにメソッドを動的に追加するにはどうすればよいですか?私は登録が必要な多くの機能を持っており、同じ配列にはありません。私はNULLのメソッドテーブルを使ってモジュールを初期化できると仮定しています。C-APIを通じてモジュールに新しいコマンドを追加しますか?

PyObject *mymod = Py_InitModule("my", NULL); 

私のメソッドを1つずつ追加する関数の名前は何ですか?

答えて

2

基本的に、あなたが最初のモジュールの辞書のネタを取得する必要があります:

d = PyModule_GetDict(m); 

ストアPyStringオブジェクト内のモジュール名:

n = PyString_FromString("modname"); 

その後適切PyMethodDef構造体mlを移入し、新しい呼び出し可能ファイルを作成します。

v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n); 

モジュールに関数名でキーされたこの呼び出し可能関数dict:

PyDict_SetItemString(d, ml->ml_name, v); 

私は明らかにすべての関連エラーチェックをスキップしました。

これは、Py_InitModule4Py_InitModuleはデフォルトの引数を持つPy_InitModule4を呼び出すマクロ)の解釈に関するものです。

+0

ありがとうございました。 – Juan

関連する問題