2
现在我在linux下编写一个可加载的.so模块,我想在主程序中使用dlopen
,并在可加载的.so模块中使用_init()
。我的计划是这样的:在linux下使用dlopen()api时,我可以在_init()函数中添加参数吗?
主程序:
...
dlopen(lib, flags);
...
加载模块:
#define MODULE_EXPORT(name, minit, mexit) \
int __##name##_init(void) __attribute__((alias(#minit))); \
void __##name##_exit(void) __attribute__((alias(#mexit)));
MODULE_EXPORT(dump, dump_init, dump_exit);
static int dump_init(void)
{
...
}
现在我想添加PARAM到dump_init功能,像这样:
static int dump_init(const char *param){}
我不知道该怎么做,或者我可以在linux中使用另一个新的API?谢谢〜
如果你能做到这一点,第二次调用'dlopen'的参数会发生什么情况,不需要初始化你的库? –