linux-C直接调用SO动态库和生成SO动态库的函数

C代码
  1. #include <stdio.h>   
  2. #include <dlfcn.h>   
  3.   
  4. int main(void){   
  5.    int (*myadd)(int a,int b);//fuction pointer   
  6.    void *handle;   
  7.       
  8.    handle=dlopen("./libmyadd.so",RTLD_LAZY);//open lib file   
  9.    myadd=dlsym(handle,"output");//call dlsym function   
  10.       
  11.   
  12.    int result=myadd(1,2);   
  13.    dlclose(handle);   
  14.    printf("%d\n",result);     
  15. }  

 以上为调用程序test8.c,

以下为库程序test7.c

C代码
  1. int output(int a,int b){   
  2.    int x=a+b;   
  3.    return x;   
  4. }  

 gcc -shared -o libmyadd.so test7.c
gcc -ldl -o test8 test8.c
./test8
3

 

 

不管什么库文件,你都既要在包含.h文件(不然编译通不过:有未声明的函数),也要在gcc选项里面指定.so文件的位置(不然链接通不过:未知的符号)  比如  gcc -I include_path -L lib_path -lyourlib  include_path改成你头文件的目录  lib_path改成你动态库文件的目录  -lyourlib 改成l加上你要引用的库文件名字  比如libpthread.so就改成-lpthread 
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(99) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值