2

Boost.Python を使用して Python コードを実行する C++ で記述された DLL があります。Python コードは、実際のアプリケーション (DLL 内) と対話できる必要があります。両方を 1 つのライブラリに含めることは可能ですか、それとも 2 つを分離する必要がありますか?

したがって、DLL X は Python コードを呼び出し、Python コードはモジュール Y をインポートします。これも DLL X にあります。

これは、Python C API または (できれば) Boost.Python を使用して可能ですか? みたいなload_python_module("test", my_dll_handle)...

DLL が PyInit_test をエクスポートしているのを見ましたが、これを呼び出すだけでよいかどうかはわかりません。また、それが期待する引数もわかりません。

4

1 に答える 1

1

PyImport_AppendInittabPython C-APIのドキュメントは、Python C-API関数を使用して、これが可能であることを強く示唆しています(私は自分で試したことはありませんが) 。以前に、インポートするモジュールの名前と初期化関数へのポインターを使用してその関数を呼び出すとPy_Initialize、組み込みモジュールであるかのように、埋め込みコードで使用できるようになります(インポートする必要があります)。 )。

Because the BOOST_PYTHON_MODULE(foo) macro just creates an initfoo() function, you should be able to use this method with Boost.Python as well.

于 2012-05-12T23:06:39.987 に答える