Linux c语言程序运行时动态加载库函数
来源:互联网 发布:李宁淘宝旗舰店 编辑:程序博客网 时间:2024/05/17 05:09
*注明:内容来自网络整理自用
一、创建test.c test.h
//test.c
#include <stdio.h>#include <stdlib.h>void PrintHello(){ printf("Hello\n");}int Add(int a, int b){ int nk = 0; nk = a + b; return nk;}
//test.h
#ifndef _TEST_H_#define _TEST_H_#include <stdio.h>void PrintHello();int Add(int a, int b);#endif
2:编译成动态库
gcc test.c -shared -fPIC -o libtest.so
3:创建主文件main.c
#include <stdio.h>#include <stdlib.h>#include <dlfcn.h>#include <signal.h>#include <errno.h>//输出错误的信息并退出void error_quit(const char *str){ fprintf(stderr, "%s\n", str); exit(1);}int main(int argc, char *argv[]){ void *plib;//指向SO文件的指针 typedef void(*FUN_HELLO)(); typedef int(*FUN_ADD)(int, int); FUN_HELLO funHello = NULL; //函数指针 FUN_ADD funAdd = NULL; //打开so文件 plib = dlopen("./libtest.so", RTLD_NOW|RTLD_GLOBAL); if(NULL == plib) error_quit("Can`t open the libtest.so"); //加载函数 void PrintHello() funHello = dlsym(plib, "PrintHello"); if(NULL == funHello) error_quit("Can`t load function 'PrintHello'"); //加载函数 int Add(int a, int b) funAdd = dlsym(plib, "Add"); if(NULL == funAdd) error_quit("Can`t load fubction 'Add'"); //调用成功加载函数 funHello(); printf("5 + 8 = %d\n", funAdd(5, 8)); //关闭so文件 dlclose(plib); return 0;}
4:编译并运行
gcc main.c -o main -ldl
./main
结果:
ysq@ysq-Box:~/code/test$ ./main
Hello
5 + 8 = 13
阅读全文
0 0
- LINUX C语言:程序运行时动态加载库函数
- Linux c语言程序运行时动态加载库函数
- linux c语言库函数
- Linux程序运行中加载动态库
- C运行时库函数
- 嵌入式 Linux C语言(十)——静态库函数和动态库函数
- 在Linux下运行C语言程序
- 在Linux下运行C语言程序
- 在Linux下运行C语言程序
- C语言程序Linux下运行
- C 语言两个动态库函数重名问题
- C语言中内存分布及程序运行加载过程
- linux c/c++ C语言库函数atoi
- C语言程序调用C++库函数方法
- linux C语言库函数(部分)
- Linux C语言库函数参考 — nice
- 关于程序运行时加载动态库失败的解决方法
- 关于程序运行时加载动态库失败的解决方法
- Android平台的兼容相关概念详细整理
- java队列BlockingQueue和ConcurrentLinkedQueue多线程并发、以及CountDownLatch与CyclicBarrier的使用
- 九、Spring Cloud系列:实战经验总结
- 【观察】推进西藏信息化建设 联想为西藏打上更深“智慧”烙印
- kafka_2.11-1.0.0单机安装
- Linux c语言程序运行时动态加载库函数
- Palindromic Substrings
- 异常类
- Our 6 Must Reads for First-Time Managers to Hit the Ground Running
- iOS加速计和陀螺仪
- linq <一>
- 高斯、柯西、拉格朗日都还在的话,他们应该最喜欢这个公众号
- 汇总:2017 年 IT 界最严重的裁员事件
- angular4环境搭建及配置