2012-05-07 5 views
1

私は大きなC++プログラムをひとつの.cppファイルに入れており、多くのクラスを定義しています(お互いに依存しています)。そして最後にmain関数を実行します。今、私はこのクラスのうちの1つをPythonで使うことにのみ興味があります。特にこのクラスの1つのメソッドは、5つのfloatを入力として受け取り、1つのfloatを出力します。私はこれを達成するための最も簡単な方法を見つけようとしています。 boost:Pythonで成功しなかったのは(主にインストール上の問題が原因です)私は現在のバージョンではC++をサポートするCythonに来ました。 Cythonチュートリアルで与えられたRectangleサンプルをうまく実行することができましたが、私は複雑な.pyxファイルを必要としない私の場合にこれをどのように適応させることができません。ファイル。あなたがする探しているすべての単一の呼び出しである場合PythonからC++クラスへのアクセス

... 
class Nuclei { 
public: 
... 
    double potential(float,float,float,float,float); 
... 
private: 
... 
}; 
... 

答えて

0

:誰かが私の.cppファイルは、例えば構造を有している場合、私はsetup.pyにして.pyxファイルに書くべきか簡単な言葉で私を説明できますおそらく最も簡単な方法はExtending Python With C/C++です。 This pageは良い例です。呼び出したいC++のコードが、それはPythonでimport demoで使用することができ、demo.cである場合

その例では、関連するsetup.pyコードは

from distutils.core import setup, Extension 

module1 = Extension('demo', 
        define_macros = [('MAJOR_VERSION', '1'), 
            ('MINOR_VERSION', '0')], 
        include_dirs = ['/usr/local/include'], 
        libraries = ['tcl83'], 
        library_dirs = ['/usr/local/lib'], 
        sources = ['demo.c']) 

setup (name = 'PackageName', 
     version = '1.0', 
     description = 'This is a demo package', 
     author = 'Martin v. Loewis', 
     author_email = '[email protected]', 
     url = 'http://docs.python.org/extending/building', 
     long_description = ''' 
This is really just a demo package. 
''', 
     ext_modules = [module1]) 

です。それはあなたが引数を持つPyObject *をとり、PyObject *を返す関数を作成することがありますし、多くはそれらが構築されているかについて語ったことができsimple-そのほとんどではないことを

注意。上にリンクされたページを見てください。それらは例でいっぱいです。

関連する問題