今天看dtc代码,有这样的一种实现,感觉还挺巧妙的。
先说过程,再说好处:
char *so = ...//读取配置文件,得到so的文件名
void* dll = dlopen(so, RTLD_NOW|RTLD_GLOBAL);//打开so
char *fun; //读取配置文件得到,得到方法名
typedef uint64_t (*fun_interface)(const char *key, int len, int left, int right);
fun_interface *foo= (fun_interface)dlsym(dll, fun);//得到函数指针
foo(a,b,c,d)//直接调用上述的foo就可以调用so里的函数了
这种实现的有点在于,不需要改变现有代码的情况下,修改so的代码,重新编写so,然后重新配置配置文件就可以实现函数的变换。
以后我可以在什么地方使用这种代码编写呢?
1. 比如加解密的场景中可以使用,我们可以编写好函数接口。