当前位置:  技术问答>linux和unix

调用动态链接库

    来源: 互联网  发布时间:2017-05-04

    本文导语:  想把一个动态链接库中的一个函数给导出来使用,也即导出它的函数地址 于是 int *DataHandle::myfun(void * pdlHandle) {     pdlHandle = dlopen("./Dynamic_Lib/mylib.so", RTLD_LAZY); // RTLD_LAZY 延迟加载     char *pszErr = dlerror(); ...

想把一个动态链接库中的一个函数给导出来使用,也即导出它的函数地址
于是
int *DataHandle::myfun(void * pdlHandle)
{
    pdlHandle = dlopen("./Dynamic_Lib/mylib.so", RTLD_LAZY); // RTLD_LAZY 延迟加载
    char *pszErr = dlerror();
    if( !pdlHandle || pszErr )
    {
        printf("Load Dynamic-lib failed!n");
        return NULL;
    }
    void (*fun) (short *, short *, UINT ,UINT ) = dlsym(pdlHandle, "MeetingMixVoice"); // 定位动态链接库中的函数 (即函数指针)  //此句报错.....................................
    if( !fun )
    {
        pszErr = dlerror();
        printf("Find symbol failed!%sn", pszErr);
        dlclose(pdlHandle);
        return NULL;
    }
return fun;
}
可是这样为什么报如下错误:
错误: 从类型‘void*’到类型‘void (*)(short int*, short int*, UINT, UINT) {aka void (*)(short int*, short int*, unsigned int, unsigned int)}’的转换无效 
调用我封装的这个函数myfun
int *funaddress = myfun(pdlHandle);//得到库中函数地址
于是调用
funaddress(,,,,);//传了四个参数
但是报错说:错误: ‘funaddress’不能用作函数
求解...

|

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,