私はライブラリといくつかのヘッドファイルを持っていますが、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. C++コードをPythonにラップする
- 4. CXXIを使用してC++ライブラリをラップする
- 5. Python:ライブラリ内のすべての関数をラップする
- 6. PythonのようにC++のベクトルをラップする
- 7. PythonのLuaコードをラズベリーパイにラップする
- 8. C++のDLLをPythonでプログラムでラップする方法
- 9. AnguarJSモジュールでJavaScriptライブラリをラップする
- 10. PythonでC#ライブラリ用のラッパーを作成する
- 11. PythonでラップされたCライブラリですが、返される配列は変更されていません
- 12. C#/ .NET用のCライブラリをスムーズに開発するには?
- 13. numpy配列をPythonにラップする
- 14. C#でPythonライブラリをインポート
- 15. Python用ライブラリ:PythonプログラムからC++関数を呼び出す方法は?
- 16. C++ライブラリにPythonを埋め込む
- 17. Cでエクステンションメソッドをラップする
- 18. objcライブラリ内のラップされた静的C++ライブラリの呼び出しによってリンカエラーが発生する
- 19. ライブラリ固有のオブジェクトをラップするのに最適なデザインパターン?
- 20. numpyの配列にC++の配列をラップするためにブーストのPythonを使用して
- 21. xmlrpc-cライブラリのC++バージョンで、<map <string、string>のオブジェクトをラップし、返り、取得する方法は?
- 22. AWSラムダPython libssl Cライブラリ
- 23. RubyにC構造体をラップする
- 24. C++/CLIでCコールバックをラップする
- 25. PythonからC#ライブラリを呼び出す
- 26. Android用Java C++ラッパー:C++テンプレートをラップする方法
- 27. Pythonのxml.etree.ElementTreeはC++ XMLライブラリに相当します
- 28. Pythonでジェネレータ関数をラップする
- 29. Python用のCコードをラップする最も好ましい方法は何ですか?
- 30. 金融用Pythonライブラリ
SWIG ++、ブーストパイソン – sehe