ctypesを使用して、C++コード用のPythonラッパー(ここではCalling C/C++ from python? )を使用しています。しかし、問題はコードの主な機能です。私は私のC++のコードでPythonからint main()を呼び出す
extern "C" {
void call_main(){ main();}
}
ような何かを行うとすると、その後のpythonラッパーを経由してこの関数を呼び出す
...
lib = cdll.lib('./mylib.so')
def run():
lib.call_main()
- >私は "セグメンテーションフォールト" を取得します。
面白いのは、私の主なメソッドコードをコピーして、たとえば、という名前の関数にコピーするときです。 test()ので、C++コードでint test(){....#pasteed code ...}を実行してexternしてからlib.test()を呼び出します。
=> eveythingはうまくいきます。メイン関数がmainまたは何かと呼ばれる問題でなければなりません。
Cコンパイラのような音はmain関数を特別な方法で扱います。 –
main()を再帰的に呼び出すことはcで許可されていますが、C++では許可されていないと思いますので、コンパイラでは特別なことをすることができます。 – BoBTFish