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

dlsym函数问题

    来源: 互联网  发布时间:2017-02-03

    本文导语:  dlsym函数是void型,但是我用它提取的函数是short型的,例: short   SingleTagIdentify=dlsym(handle,"SingleTagIdentify"); 这种写法是错误的,所以请问这个需要怎么转换啊?请各位高手指点! | 首先,你...

dlsym函数是void型,但是我用它提取的函数是short型的,例:
short   SingleTagIdentify=dlsym(handle,"SingleTagIdentify");
这种写法是错误的,所以请问这个需要怎么转换啊?请各位高手指点!

|
首先,你要知道dlsym的函数原型,这样才能保证类型匹配:
void* dlsym( void* handle, const char* name );

Examples:
Use dlsym() to find a function pointer and a pointer to a global variable in a shared library: 

typedef int (*foofunc)( int );

void* handle;
int* some_global_int;
foofunc brain;

/* Open a shared library. */
handle = dlopen( "/usr/nto/x86/lib/libfoo.so.1", RTLD_NOW );

/* Find the address of a function and a global integer. */
brain = (foofunc)dlsym( handle, "takeover_world" );
some_global_int = (int* )dlsym( handle, "my_global_int" );

/* Invoke the function and print the int. */
x = (*brain)( 5 );
printf( "that global is %dn", *some_global_int );Check to see if a function is defined, and call it if it is: 

typedef int (*funcptr)( void );

funcptr funk = NULL;

funk = (funcptr)dlsym( RTLD_DEFAULT, "get_funky" );
if( funk != NULL ) {
    (*funk)();
}

|

编译时链接dl库,也就是加上选项:   -ldl

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












  • 相关文章推荐
  • dlsym的疑惑,求解惑


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3