免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3903 | 回复: 3
打印 上一主题 下一主题

[C] 调用dlsym问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-13 19:02 |只看该作者 |倒序浏览
  1. #include<stdio.h>

  2. #include<dlfcn.h>

  3. typedef int (*Lancher)(int,char**);
  4. typedef void* LibraryHandler;



  5. int main(int argc,char* argv[])
  6. {
  7.     LibraryHandler lib_handler;
  8. //linux
  9.     lib_handler = dlopen("lancher.so",RTLD_LAZY);
  10.     if(!lib_handler){
  11.         printf("unable to load lancher.so:%s\n",dlerror());
  12.         return 0;
  13.     }
  14.    
  15.     Lancher entry_point = NULL;
  16.     entry_point = (Lancher)dlsym(lib_handler,"Lancher");
  17.     if(entry_point==NULL){
  18.         printf("unable to get lachner.so::lancher\n",dlerror());
  19.         return 0;
  20.     }

  21.    int rc = entry_ponit(argc,argv);
  22.    
  23.    int ret = dlclose(lib_handler);
  24.    if(ret<0){
  25.         printf("dlclose failed:%s\n",dlerror());
  26.    }
  27.    
  28.     return 0;
  29. }
复制代码
但编译的时候 会出现
/tmp/cc6L5bzA.o: In function `main':
main.c.text+0xa6): undefined reference to `entry_ponit'
collect2: ld 返回 1

请问这是怎么回事?

论坛徽章:
0
2 [报告]
发表于 2011-01-13 19:52 |只看该作者
(*Lancher)(int,char**);

这个函数是不是得先声明一下 在windows下调用动态库函数时需要声明的

论坛徽章:
0
3 [报告]
发表于 2011-01-13 23:07 |只看该作者
好奇怪  应该不会有这个错才对  你的entry_ponit只是一个函数指针

论坛徽章:
0
4 [报告]
发表于 2011-01-14 01:57 |只看该作者
因为你把point拼错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP