問題タブ [pybindgen]
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.
c++ - 共有オブジェクト ファイルを配置する場所
私は、pybindgen を使用して Python 用の C/C++ バインディングを作成する世界に足を踏み入れています。「ビルド (GCC の手順)」で説明されている手順に従って、サンプル ファイルのバインディングを作成しました。
http://packages.python.org/PyBindGen/tutorial.html#a-simple-example
実行make
すると、.so ファイルが生成されます。.so ファイルがどのように機能するかを理解していればimport
、共有オブジェクトのクラスを Python に変換できるはずです。ただし、ファイルを配置する場所と、Python にその場所を知らせる方法がわかりません。さらに、元の c/c++ ソース ファイルは .so ファイルに添付する必要がありますか?
これまでのところ、ファイルを /usr/local/lib に配置し、そのパスを .bash_profile の DYLD_LIBRARY_PATH に追加しようとしました。Python インターピーター内からモジュールをインポートしようとすると、モジュールが見つからないというエラーがスローされます。
私の質問は、生成された .so ファイルを Python プログラムで使用するには、何をする必要があるのでしょうか?
c++ - 特定のC++ポインターのPyBindGenPyObjectを取得するにはどうすればよいですか?
によってPyObject
作成されたPyBindGen
場合、ラップされたC ++オブジェクトへのポインターを取得するのは簡単obj
で、構造体のメンバーを使用するだけです。
しかし、私がちょうど持っていて、それをラップする(もしあれば、それは存在しないかもしれない)MyWrappedClass*
を取得したいとしましょう。PyObject
私自身のバックポインターの辞書を維持せずにこれを行う方法はありますか?
python - MacOS10.7でpybindgenをビルドするときのwafエラー
MacOS10.7でPybindgenをビルドしようとしています。Lion EverythingはUbuntuで正常に動作しますが、...
OS Xでは、wafインストーラー(Pybindgenはwafを使用してビルドとインストールを行います)はこれを窒息させます:
=>しかし、Mac SDkには少なくともPython.hがあると100%確信しています...そこにあることはわかっています...wafがそれを確実に検出する方法がわかりません...wafには関数があります問題のように思われるcheck_python_headersと呼ばれます。どうすればこれを修正できますか?
c++ - C++相互運用機能用のライブラリを自動生成しようとしたときのエラー
私はpybindgenを使用して、PythonとC++の間のリンクコードを作成しています。または、少なくとも、自分のコードで動作させることができればと思います。実行時にPythonファイルを実行すると、次のエラーが発生します。pybindgenを満足させたり、これらの問題を解決したりする方法は、非常に役立ちます。
私の.pyファイルは
python - PyBindGenでカスタムタイプハンドラーを作成するには?
PyBindGen のドキュメントによると、独自のデータ型のカスタム型ハンドラーを簡単に作成できます。しかし、それらを書いた良い例は見つかりませんでした。pybindgen で提供される例は、詳細を理解するにはあまりにも基本的であり、ドキュメントは残念ながらほとんど存在しません。私が正確に必要とするのは:
- コンバーターのベースとしてどのクラスを使用する必要がありますか?
- バインディング コードの特定の部分を拡張または置換するには、どのメソッドをオーバーロードする必要がありますか?
- const パラメータと非 const パラメータを処理するには、どのようなアプローチを使用すればよいですか?
カスタムタイプハンドラをpybindgenに追加する完全で十分に文書化された例はありますか? 誰かがあなた自身のプロジェクトでこれを行い、アプローチを共有するかもしれませんか?
必要なものをよりよく理解するための現在のバインディングの例。現在Boost.pythonで完了:
メソッド System::XYZ() は Eigen::Vector3f オブジェクトを返します。データをコピーせずにnumpy配列に変換する必要があります。全体のアイデアは効率に関するものであるため、これは重要です。現在、それは醜いマクロによって行われています:
これは機能しますが、Eigen オブジェクトを使用するメソッドごとにラッパー関数を作成する必要があり、これを維持するのは悪夢です。そのため、PyBindGen を試して、これらのマクロからすべてのボイラープレート コードを自動的に追加するコンバーターを作成したいと考えています。
ところで、boost.python コンバーターはデータのコピーを強制するため、ここでは役に立ちません。
python - Python にバインドされた C++ ライブラリの jedi オートコンプリートを取得することは可能ですか?
私は jedi-vim で vim を使用して、いくつかの Python コードを編集しています。ただし、使用する一部のライブラリは、pybindgen を使用して Python バインディングを生成した C++ 共有ライブラリです。jedi-vim を使用すると、どのクラスやメソッドの署名も得られず、それらのリストだけが表示されます。
たとえば、このライブラリでは、ライブラリをインストールしてインポートすると 、 https://github.com/jorisv/SpaceVecAlgになります。
次に、sva.
すべての一次関数とクラスを正しく表示します。ただし、最初のものを選択すると、sva.ABInertia(
jedi はクラス コンストラクターを提案しません。
どうにかしてクラス定義を一種の python ドキュメントにエクスポートする必要があると思います。そのために doxygen アノテーションを使用できると考えましたが、その追加のドキュメントを jedi (または他の補完エンジンなど) にフィードする方法がわかりません。 IPythonで構築されたものとして)。
どうもありがとう !