問題タブ [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.

0 投票する
2 に答える
731 参照

c++ - Python の整理方法 / Boost Python プロジェクト

Boost::Python を使用していくつかの C++ ライブラリとやり取りしたい python プロジェクトがあります。他の人が同じプロジェクト内で python/boost::python/C++ コードを整理する方法を知りたいです。

組織とは、ファイル/ディレクトリ構造、ビルド手順などを意味します。

0 投票する
2 に答える
6227 参照

python - Boost.pythonを使用してPythonリストをC ++ベクトルに渡す

ClassNameを受け入れる C++ 関数にオブジェクト タイプの Python リストを渡すにはどうすればよいvector<ClassName>ですか?

私が見つけた最高のものは、次のようなものです: example . 残念ながら、コードがクラッシュしてしまい、その理由がわかりません。これが私が使用したものです:

0 投票する
3 に答える
4559 参照

c++ - Boost::python テンプレートを使用して C++ 関数を公開し、テンプレートを返す

C++ コードベースの Python バインディングを構築する必要があります。私は boost::python を使用していますが、テンプレートを使用して返す関数を含むクラスを公開しようとして問題に遭遇しました。これが典型的な例です

典型的な T は、string、double、vector です。

ドキュメントを読んだ後、使用するすべてのタイプに薄いラッパーを使用してみました。string と double のラッパーと、対応するクラス宣言を次に示します。

正常にコンパイルされますが、Python バインディングを使用しようとすると、C++ 例外が発生します。

興味深いことに、ダブルまたは文字列値の Foo のみを公開すると、つまり

それは正常に動作します。何か不足していますか?

0 投票する
1 に答える
682 参照

c++ - BoostPythonでタプルの一部として返されるオブジェクトの返されるポリシーを指定する方法

C++オブジェクトを作成する関数があります。リファクタリングの前は、C ++関数からポインターを返していましたが、boost pythonラッパー宣言では、を使用していboost::python::return_value_policy<boost::python::manage_new_object>ました。このようなもの:

ここで、オブジェクトだけでなく、いくつかのエラーメッセージも返す必要があります。リファクタリングは、基本的にC ++関数を変更して、タプルを返すようにします。

この変更で返品ポリシーをどのように指定する必要がありますか?

0 投票する
2 に答える
729 参照

c++ - Boost Python でfrozenset を作成してアクセスする

std::set<std::string>引数または戻り値を持つ C++ メソッドがいくつかあります。frozensetこれを Python (または通常の )にマップしたいのsetですが、これを行う簡単な方法はないようです。このタスクを達成する方法を知っている人はいますか。

0 投票する
1 に答える
1404 参照

c++ - 構文エラーに関する Python 例外テキスト (boost ライブラリ)

このコード スニペットを取得しました (プログラム全体が正しくコンパイルおよびリンクされます)。

プログラムが実行しようとするファイルに構文エラーがあるため、例外がスローされます。プログラムがエラー メッセージを取得しようとすると、クラッシュします...

このコードは実行時エラーには問題なく機能しますが、何らかの理由で構文エラーでクラッシュします。

この種のエラーでエラー文字列を取得するにはどうすればよいですか?

前もって感謝します

0 投票する
1 に答える
5621 参照

c++ - Boost-python C++ クラス インスタンスを Python クラスに渡す方法

私はpythonをブーストするのが初めてです。最初にcppコードでcppクラスインスタンスを初期化し、次にこのcppインスタンスをpythonコードに渡し、pythonクラスインスタンスを使用してそれを呼び出す必要があります(cppインスタンス)。Python/C API の方法を試してみましたが失敗したので、C++ クラス インスタンスを Python クラスに渡す方法を知りたいです。

以下は私のコードで、boost python demo から変更されています。

main.cpp で

python.pyで

上記のコードでは、worldObjectPtr を pInstanceHelloPython に渡したいので、pInstanceHelloPython は worldObjectPtr->name を Python に設定できます。しかし、私はそれを行う方法がわかりません。よろしくお願いします!

0 投票する
1 に答える
1483 参照

c++ - boost.python を使用して、UTF-8 でエンコードされた char* から Python Unicode インスタンスを返します。

私は非常に単純であるべきことをしようとしていますが、既存のドキュメントからその方法を理解するのはあまりうまくいきません。

Python 2 プロジェクトの場合、リストの gettext-translated 文字列を Unicode インスタンスとして Python に返そうとしています。gettext() の戻り値は UTF-8 でエンコードされた char* であり、PyUnicode_FromString を使用して Python Unicode インスタンスに変換するのは非常に簡単です。これは簡単なことだと思いますが、方法がわかりません。

Ignacio Vazquez-Abrams と Thomas KI からのコメントに基づいて、単一の文字列に対してこれを機能させました。その場合、すべての boost.python インフラストラクチャをバイパスできます。次に例を示します。

これは、通常の def ステートメントで公開されます。

残念ながら、Unicode インスタンスのリストを返したい場合、これは機能しません。これは私の素朴な実装です:

しかし、これはコンパイルされません: boost::python::list は PyObject 値を処理しているようです。