如何开发一个高效可用的多插件运行程序?插件接口是关键。
设计一个高效可用的插件接口,会让程序节省很多资源和时间。
设计插件接口是一件容易的事,但设计一个高效的插件就不是一件容易的事。现在学习一下本公司老大的设计插件的方式以及思路。
插件一般来说要么是动态库要么是静态库,那么多个同级插件可以使用统一接口来进行实现。打开动态库的方式一种是静态链接一种动态打开。
一般来说静态链接就是在编译的时候把所有的动态库用'-L'全部链接编译进去,这是一个死方法,意思说我只能加载一定的模块,想要再加那么就得从新编译一下程序。这种方式一般在代码动态开发中是不可取的(这种情况在动态库固定且很少的情况下使用)。
如果要开发可配置且能动态的加载程序所需要的插件,那么Windows就是用
HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函数别名
youFuntionNameAlias = (MYFUNC)GetProcAddress(hDllInst,"youFuntionName");
方式在程序中打开就可以了。
Linux用
void *dlopen(const char * filename, int flag);//打开动态库
void *dlsym(void *handle, char*symbol);//获取功能函数
const char *dlerror();
int dlclose(void *handle)