当前位置: 技术问答>linux和unix
关于动态库加载的问题
来源: 互联网 发布时间:2016-05-02
本文导语: 如果我库里有个函数原型是 void Initialise(BOOL TYPE); 那我在我的程序里应该怎么调用? 我试着这样写 void (*init)(BOOL TYPE); // 1 init = dlsym(handle,"Initialise"); // 2 init(TRUE); ...
如果我库里有个函数原型是
void Initialise(BOOL TYPE);
那我在我的程序里应该怎么调用?
我试着这样写
void (*init)(BOOL TYPE); // 1
init = dlsym(handle,"Initialise"); // 2
init(TRUE); // 3
出现错误,说2处从void*到void (*)(bool)的转换无效
handle已经dlopen打开了
是不是1处的定义有问题?我改过很多种写法 错误莫名其妙。。
小弟新手 恳请大家指教
void Initialise(BOOL TYPE);
那我在我的程序里应该怎么调用?
我试着这样写
void (*init)(BOOL TYPE); // 1
init = dlsym(handle,"Initialise"); // 2
init(TRUE); // 3
出现错误,说2处从void*到void (*)(bool)的转换无效
handle已经dlopen打开了
是不是1处的定义有问题?我改过很多种写法 错误莫名其妙。。
小弟新手 恳请大家指教
|
void (*init)(BOOL TYPE); // 1
init = dlsym(handle,"Initialise"); // 2
init(TRUE);
should be
typedef void (*FUNC)(BOOL TYPE);
init = (FUNC)dlsym(handle,"Initilise");
init = dlsym(handle,"Initialise"); // 2
init(TRUE);
should be
typedef void (*FUNC)(BOOL TYPE);
init = (FUNC)dlsym(handle,"Initilise");
|
对,强制类型转换一下