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

本文通过一个具体的C语言程序示例介绍了如何使用动态链接库(.so文件)。主要内容包括定义一个简单的函数并在一个独立的库文件中实现它,然后在另一个程序中加载并调用这个库文件中的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 
阅读(99) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值