ctypespythonモジュールを使用してpythonからC/C++関数を使用できるようにしたいと思います。
/ファイルに関数int doit()
があります。共有ライブラリを読み込もうとすると:.c
.cpp
Frr=CDLL("/path/FoCpy2/libFrr.so")
Frr.doit(c_int(5))
.c
バリアントを使用すると、非常にうまく機能することがわかります。C ++が呼び出されるとき、この関数を呼び出すための良い方法は次のとおりです(usingをnm libFrr.so
使用nm -gC libFrr.so
すると、単純に生成されますdoit()
):
Frr._Z4doitv(c_int(5))
私はStackexchangeで、PythonからC ++を呼び出す標準的な方法がなく、「非標準の名前マングリング」の問題があることを読みました。「Z4」はその問題の一部ですか?非標準の名前マングリングは、クラスメソッド、テンプレートなどのより高度な言語機能だけでなく、そのような基本的な機能にも現れると思いますか?C ++コードの単純なケースで単純なC関数名を強制的に使用することは可能ですか?