我想要一个插件,名称更简单,可以在其他 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();
这样的代码是否会导致任何问题,即是否允许(按标准)在extern "C"
函数中使用 C++ 类作为参数或返回类型?它似乎适用于我的 gcc,但其他人呢?