2016-07-25 8 views
-4

外部ライブラリを使用せずにPythonからC++クラスを実行する方法 Boost.Python、SWINGなど?私はこのクラスに引数を渡したり、特定のメソッドを呼びたくないのですが、私のC++クラスにはvoidメソッドしかありません。mainメソッドを実行したいだけです。PythonからC++クラスを実行

これが不可能な場合は、このチュートリアルhttp://intermediate-and-advanced-software-carpentry.readthedocs.io/en/latest/c++-wrapping.html#manual-wrappingを見てください。しかし、元のhello関数を持つ同じC++クラスにhello_wrapper関数を入れるべきかどうかはわかりませんでした。そして、また、どのように私は、Python(チュートリアルの第二部)における剰余を作成することができ、どこで、私はこのコードを

DL_EXPORT(void) inithello(void) 
{ 
    Py_InitModule("hello", HelloMethods); 
} 

おかげ

答えて

1

を置くべきCを実行する方法はあり++クラス

あなたはC++クラスを実行しません。それらはデータ型です!それはSWIGと呼ばれています

Boost.Python、SWING

は、

:)を振り回さないあなたはPyObjectを初期化し、独自のCラッパーコードを追加することができます。 CPythonのドキュメントとPythonを拡張するチュートリアルの例を読むことをお勧めします。あなたがバージョンを指定しなかったので、私はあなたに離散リンクを与えることはできません。

pythonはCであり、C++はそうではありません。つまり、あなたのコードでexternal "C"を使用することで、C ABIでいくつかのものをエクスポートする必要があります。それは初心者のためのものではないかもしれませんし、外部のラッパージェネレータを使用しないことが本当に問題になるかどうかは確かに評価してください。適切にSWIG(これは本当に痛みです)、Pythonオブジェクトを得ることができます本当にはPythonオブジェクトのように振る舞います。あなたはPythonなどでそれらを拡張することができます

関連する問題