私はライブラリといくつかのヘッドファイルを持っていますが、C++のソースコードはありません。私はPythonでそれを使いたいと思います。 私はpy ++を試みましたが、gccxmlはエラーを報告しました。 私はswigを試みましたが、いくつかの "未定義のシンボル"エラーがいくつかありました。 スマートツールは自動的にそのようなことを行うことができますか?Python用のC++ライブラリをラップするには?
答えて
あなたは(あなたは2つの機能でLibraryClassというクラスをエクスポートしたいと仮定すると、このようなコードを含む、あなたがあなたの元のライブラリにリンクする単純なラッパーDLLを作成する必要があると思いboost python
使用してみてください可能性があり、FOO &バー)
#include <librarytowrap.h>
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(Library)
{
class_<LibraryClass>("LibraryClass")
.def("foo", &LibraryClass::foo)
.def("bar", &LibraryClass::bar)
;
}
あなたはヘッダファイルでC++の定義を読んで、あなたのために懸命に仕事をするためにthe automatic code generatorを使用することはできないかもしれないが、ブーストのpythonのページによると、これはもはや維持されているので、私は」それがどれくらいうまく動作しているかはわかりません
自動コードジェネレータはgccxmlを使用しますが、gccxmlはヘッドファイルに何らかのエラーがあると報告します。 – WhatisThat
gccxmlから取得したエラーに関する別の質問を投稿してみることができます。多分誰かがそれを手伝ってくれるかもしれない。 – obmarg
このアプローチでは多少の作業が必要で、たくさんの関数があり、関数が多くのC++組み込み型を引数/戻り値として使用する場合は実行できません。
が一致しない場合、あなたは純粋なCの引数と戻り値の型で、彼らの前に「のextern C」のキーワードで、いくつかのc-ラッパ関数を定義することができます。コンパイルし、 "ラッパー関数"をC++ライブラリにリンクします。次に、ctypesモジュール(Pythonから)を使用してラッパー関数を呼び出すことができます。ラッパー関数はライブラリ内のC++関数を呼び出します。
多分、このアイデアはあなたの** C **ライブラリを – WhatisThat
- 1. PythonでC++ライブラリをラップしてカスタムタイプを処理する
- 2. XCodeでC++ライブラリをラップする
- 3. CXXIを使用してC++ライブラリをラップする
- 4. C++コードをPythonにラップする
- 5. Python:ライブラリ内のすべての関数をラップする
- 6. PythonのようにC++のベクトルをラップする
- 7. Boost-Python C++プロジェクトビルド、Pythonから新しいライブラリを使用するには?
- 8. PythonにC++クラスをラップする際の問題
- 9. 私はプライベートコンストラクタと工場を持つクラスを持っているC++ライブラリではブースト-pythonのラップ工場
- 10. Qt C++で使用するC#DLLをラップする方法は?
- 11. C#/ .NET用のCライブラリをスムーズに開発するには?
- 12. AnguarJSモジュールでJavaScriptライブラリをラップする
- 13. PythonのLuaコードをラズベリーパイにラップする
- 14. PythonでC#ライブラリ用のラッパーを作成する
- 15. CライブラリをC++ライブラリに変換する
- 16. PythonでラップされたCライブラリですが、返される配列は変更されていません
- 17. C++のDLLをPythonでプログラムでラップする方法
- 18. C++の例外処理でCコードをラップするには?
- 19. Cで使用するOpenCV C++をラップする
- 20. C#でPythonライブラリをインポート
- 21. objcライブラリ内のラップされた静的C++ライブラリの呼び出しによってリンカエラーが発生する
- 22. Cでエクステンションメソッドをラップする
- 23. xmlrpc-cライブラリのC++バージョンで、<map <string、string>のオブジェクトをラップし、返り、取得する方法は?
- 24. ラップC++ Cメソッド
- 25. ライブラリ固有のオブジェクトをラップするのに最適なデザインパターン?
- 26. numpy配列をPythonにラップする
- 27. Python pygameリファクタリング...メソッドにコードをラップする
- 28. Python用ライブラリ:PythonプログラムからC++関数を呼び出す方法は?
- 29. C++ライブラリにPythonを埋め込む
- 30. `extern" C "vsネイティブC++ライブラリを使用してCライブラリを使用する場合の欠点は何ですか?
SWIG ++、ブーストパイソン – sehe