- 问题
在C中加载动态库lib的时候,函数的名字没有改编,而在C++中,在编译的时候,函数的名字经过name mangling的改编。所以在C++中就有两个问题需要解决,一般函数的导出、类的导出。 - 一般函数的导出
extern “C”
有两种声明方式:
extern "C" int fun();// 针对导出函数比较少的:
#ifdef __cplusplus //针对导出函数比较多的情况
extern “C”
{
#endif
......
#ifdef __cplusplus
}
#endif
3 类的导出
加载类有点困难,因为我们需要类的一个实例,而不仅仅是一个函数指针。我们无法通过new来创建类的实例,因为类不是在可执行文件中定义的,况且(有时候)我们连它的名字都不知道。
解决方案是:利用多态性! 我们在可执行文件中定义一个带虚成员函数的接口基类ÿ