当前位置: 技术问答>linux和unix
dlopen函数问题
来源: 互联网 发布时间:2017-02-13
本文导语: 头文件 //VDS_core.h #ifndef VDS_CORE_H_ #define VDS_CORE_H_ // 定义强制C类型以回避C++命名规范,这样我们就可以定义dlsym() #ifdef __cplusplus extern "C" { #endif class CPlugMain { public: virtual int Action() = 0; }; // 下面是Plugin的通...
头文件
主文件
//VDS_core.h
#ifndef VDS_CORE_H_
#define VDS_CORE_H_
// 定义强制C类型以回避C++命名规范,这样我们就可以定义dlsym()
#ifdef __cplusplus
extern "C" {
#endif
class CPlugMain
{
public:
virtual int Action() = 0;
};
// 下面是Plugin的通用函数,每个Plugin都会重载这个函数,主程序将创建唯一的子进程
extern CPlugMain *CreatePlug();
typedef CPlugMain * (*CREATEPLUG_PROC)();
#ifdef __cplusplus
}
#endif //#define cplusplus
#endif /* VDS_CORE_H_ */
主文件
//VDS_core.cpp
#include
#include
#include
#include "VDS_core.h"
//下面将定义固定的Plugin名称,读者可以自行定义如同Windows注册表那样的Plugin注册系统
#define NUM_PLUGINS 2
char * szPlugins[]={"./plugin1.so","./plugin2.so"};
int main(int argc, char ** argv)
{
CREATEPLUG_PROC createproc[NUM_PLUGINS];
CPlugMain * pPlugins[NUM_PLUGINS];
void * handle[NUM_PLUGINS];
char * error;
int i;
//加载所有Plugin
for(i=0;i