私はこのタイプのコーディングを初めて試しているので、知識不足をご容赦ください。
要件:pybind11を使用してC ++でPythonライブラリをインポート/使用できるようにPythonインタープリターを埋め込んだC ++コードがあります。さらに、この完全なC ++コードのラッパーを(Pythonインタープリター部分とともに)作成し、モジュールとしてpythonに公開したいと思います。わかりやすくするために、以下の例を検討してください。
**Main_code.cpp:**
#include <iostream>
#include <pybind11/embed.h> // everything needed for embedding
int main() {
pybind11::scoped_interpreter guard{}; // start the interpreter and keep it alive
pybind11::module sys = pybind11::module::import("sys");
pybind11::print(sys.attr("path"));
return 0;
}
このコードをPythonに公開し(たとえば、Cpp_funcという名前のモジュールとして)、「importCpp_func」を使用してpyスクリプトにインポートしたいと思います。
私が今まで試したこと:pybind11を使用すると、PythonインタープリターをPythonに埋め込むことなく、サンプルのcppコードを拡張することができました。例は、pybind11 docshttps : //pybind11.readthedocs.io/en/latest/basics.html 「単純な関数のバインディングの作成」セクションから抜粋したものです。しかし、PythonインタープリターがすでにC ++コードに埋め込まれている場合、同じことを行う方法を理解できません。
私の要件が明確であることを願っています。これについてのコメントは本当に役に立ちます!
前もって感謝します!
scoped_interpreter_guard
ちょうどであるRAIIラッパーの周りinitialize_interpreter
とfinalize_interpreter
。のfinalize_interpreter
代わりに自分自身を呼び出すことができますPy_Finalize
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加