上一节中,我们介绍了插件作为动态库的加载,其中我们注意到
函数:
void* dlsym(void* handle,const char* symbol)
返回的是【symbol对应的地址】。
因此,在我们开发的插件中,SetupPlugin和RemovePlugin函数需要添加extern “C” :
extern "C" Plugin* SetupPlugin()
{
return new MyPlugin();
}
extern "C" Plugin* RemovePlugin(Plugin *plugin)
{
delete plugin;
}
为什么呢?
这就得提一提C++的Name Mangling了:
在每个C++程序(或库、目标文件)中,所有非静态&#