他の C++ コードで解決できるように、より単純な名前のプラグインが必要です。
class B {
};
extern "C" B foo(); // to avoid name mangling in order to be loaded by dlsym
そして、プログラムの他の部分 (これも C++ であり、クラス B の同じ定義をプラグインと共有しています):
B (*func)();
func = dlsym("/path/to/so", "foo");
B m = func();
そのようなコードは問題を引き起こしますか? つまり、(標準で) C++ クラスをextern "C"
関数のパラメーターまたは戻り値の型として使用することは許可されていますか? 私の gcc では動作するようですが、他の gcc ではどうでしょうか?