問題タブ [boost-python]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 組み込みの Python インタープリターを C++ 関数で拡張するにはどうすればよいですか?
埋め込みインタープリターを C++ コードで拡張するにはどうすればよいですか? インタープリターを埋め込んでおり、boost.python を使用して (共有ライブラリのように) ロード可能なモジュールを作成できますが、C++ アプリケーションと直接やり取りしたいので、ライブラリが浮かんでいるのは望ましくありません。私の文章が少し支離滅裂でしたら申し訳ありません。
c++ - Boost.Python でビルドされたモジュールを QtCreator でデバッグする
Boost.Python でビルドしたモジュールがあり、それを QtCreator (または gdb) でデバッグしたい。できれば視覚的な環境を好みます。
c++ - C++ で Python の KeyboardInterrupt を渡す/キャッチする/応答するにはどうすればよいですか?
C++ で書かれた単純なライブラリがあり、boost.python を使用するための Python ラッパーを作成しています。一部の関数は実行に時間がかかります (30 秒以上)。割り込み可能にして、python インタープリターで ctrl-d を押して KeyboardInterrupt をトリガーしたときに、C++ で何らかの形で応答できるようにしたいと考えています。
これを行う方法はありますか?boost.org または python.org で、割り込みと boost.python に関する情報を見つけることができませんでした。
python - Mac で Boost と Exempi をビルドする
Python XMP Toolkitをインストールするには、私の Mac に Exempi をインストールする必要がありますが、これを行うのは本当に悪夢のようです...
苦労の末、やっとboostで作ってみたら、最高でした
現在、コマンドを使用してExempiを構成しようとしています
しかし、それは常にこれに行き詰まります:
私は数日間グーグルをしてきましたが、役に立つものは何も見つかりませんでした... 誰かが以前に同じ問題を抱えていましたか? 私は救いの手のために死ぬだろう... すべてのヒントは大歓迎です!
編集:
私はそれを作成しましたがport
、今では最終的にexempi @2.1.1_0 (active)
.
問題は、XMP ツールキットをロードしようとすると、exempi が見つからず、インストール ガイドで報告されているようにエラーが発生することです。
Exempi をインストールしていない場合は、libxmp
ExempiLoadError
をロードしようとすると例外が発生します。
私に何ができる?
c++ - Pythonモジュールの「アンロード」および関連するAPIの「アンバインド」
Pythonを(Boost.Python経由で)埋め込み、「拡張」フレームワークを提供するプログラムがあります。拡張機能がAPIのPythonバインディングのセットをロードできるようにすることで、これら2つの部分を統合したいのですが、プラグインがアンロードされたときにこれらのAPIを「登録解除」する方法について混乱しています。
これはPythonとBoost.Pythonでも可能ですか?ドキュメントにはAPIの「バインド解除」が不可能であることが示されているため、LuaとLuaBindでは不可能であることを私は知っています。
この質問の記述が非常に貧弱であるため、申し訳ありません。ここでは午前2時30分で、しばらくお待ちしています。;)
c++ - Boost::Python の raw_function が void を返す
Boost::Python を使用すると、関数をラップする通常のメカニズムは、C++ 関数が を返すときに正しく機能しvoid
ます。残念ながら、通常のメカニズムにも制限があります。具体的には、サポートする機能のアリティに関してです。したがって、boost::python::raw_function を使用して関数をラップする必要がありますが、関数が を返すとコンパイルされませんvoid
。簡単なテストケースを次に示します。
エラーが発生します:
/usr/local/include/boost/python/raw_function.hpp: メンバー関数 'PyObject* boost::python::detail::raw_dispatcher::operator()(PyObject*, PyObject*) [with F = void (* )(boost::python::tuple, boost::python::dict)]':
/usr/local/include/boost/python/object/py_function.hpp:94: 'PyObject* boost::python::objects::full_py_function_impl::operator()(PyObject*, PyObject*) からインスタンス化 [with Caller = boost::python::detail::raw_dispatcher, Sig = boost::mpl::vector1]'</p>
void.cpp:8: ここからインスタンス化
/usr/local/include/boost/python/raw_function.hpp:36: エラー: void 式の使用が無効です
今のところ、関数にダミーの値を返させることでこれを回避できますが、それでは少し満足できません。他の人がこの問題に遭遇しましたか?
c++ - Boost.Python:ポインター変数の所有権
Boost.Pythonを使用してC++ツリークラスをPythonに公開しています。ノードクラスは子ノードのリストを保持し、メソッドを提供します
Nodeクラスは、提供されたNodeポインターの所有権を取得し、デストラクタが呼び出されたときにその子ノードを削除します。
add_childメソッドを次のように公開しています。
私の実際の質問は、Nodeクラスが子ノードの所有権を取得することをBoost.Pythonにどのように伝えるのですか?
Pythonで次のコードを実行すると:
ノード変数によって参照されるオブジェクトは、スクリプトの最後に2回削除されます。1回目はノード変数が削除され、2回目はparentNodeが削除されます。
c++ - MSVC-.dll(.pyd)へのboost::python静的リンク
VS10プロジェクトを取得しました。Pythonで使用できるようにC++コードを作成したいと思います。私はブーストチュートリアルに従い、それを機能させました。ただし、VSはboost-python-vc100-mt-gd-1_44.libをリンクし続けますが、これはboost-python-vc100-mt-gd-1_44.dllを呼び出す単なるラッパーです。そのため、.dllを.dll(.pyd)ファイルと一緒にコピーする必要があります。だから私はboost:pythonを静的にその.dll(.pyd)ファイルにリンクしたいと思います。しかし、VSまたはコンパイラとリンカのマニュアルに構成オプションが見つかりません。最も奇妙なことは、同じ構成でboost :: filesystemを使用している古いプロジェクトが1つあることですが、そのプロジェクトは静的libであるlibboost-filesystem-*。libに対してリンクしているため、問題ありません。私は何の成功もなく数時間グーグルをしてきました、そしてそれは私を夢中にさせます。
助けや提案をありがとう。
java - Pythonとインターフェースする非常に高速な抽象化を書くための言語の選択?
現在Pythonで記述されているシステムがあり、バックエンドレイヤーとフロントエンドレイヤーに分けることができます。Pythonは遅すぎるので、バックエンド機能をPythonから呼び出せるように、フロントエンドをPythonのままにして、高速コンパイル言語でバックエンドを書き直したいと思います。そうするための最良の選択は何ですか?
私はcythonを検討しましたが、書くのは非常に限られていて面倒で、それほど速くはありません。Boost Python for C ++について私が覚えていることから、言語間のブリッジを維持することは非常に面倒です。より良い選択肢はありますか?
私の主な要因は次のとおりです。
- 実行速度
- コンパイルの速度
- 言語は宣言型です
c++ - CMake:静的ライブラリを使用する共有ライブラリ
静的ライブラリに対してリンクする共有ライブラリ(実際にはPythonモジュール)を作成しようとしています。両方のライブラリは同じプロジェクトの一部であり、cmakeを使用して構築されています。
これで、共有ライブラリは次のように構築されます。
これはエラーなしでビルドされますが、Pythonモジュールをインポートしようとすると、次のようになります。
同様の方法で構築された実行可能ファイル(単体テスト)もいくつかあり、それらは完全に機能します。
追加する必要があります。これはLinuxでgccを使用しています。