.so ファイルを作成した C++ コードがいくつかあります。
私の目的は、この .so ファイルを Python スクリプトにロードすることです。
C++ メソッドを公開するために、それらの C ラッパー メソッドを作成し、C メソッドを公開します。
ただし、Python スクリプトで .so ファイルを読み込もうとすると、未定義のシンボル エラーが発生します。
これらのエラーは、一部の C++ クラスで内部的に使用され、.so ファイルからは公開されないメソッドに関するものです。(nm -C -u .so)
- .so ファイルの作成時に名前が解決されていませんか?
- .so ファイル内の未定義のシンボルを解決する最善の方法は何ですか。
例:
C++ :
class myclass {
public:
void func1(int _i);
int getval();
};
C wrapper :
extern "C" int getval_w();
int getval_w() {
myclass obj;
return obj.getval();
}
したがって、このコードを .so ファイルにコンパイルして python スクリプトにロードすると、次のようなエラーが発生します: 未定義のシンボル: "func1 のマングル名"