【发布时间】:2013-01-27 15:35:11
【问题描述】:
我想要一个插件,名称更简单,可以在其他 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,但其他的呢?
【问题讨论】:
-
我认为您的代码没有任何问题。
-
为什么除了[C++]之外还标有[C]?这个问题似乎只涉及 C++。如果我们还必须考虑 C 语言,问题的性质就会发生巨大变化。