C代码
- #include <stdio.h>
- #include <dlfcn.h>
- int main(void){
- int (*myadd)(int a,int b);//fuction pointer
- void *handle;
- handle=dlopen("./libmyadd.so",RTLD_LAZY);//open lib file
- myadd=dlsym(handle,"output");//call dlsym function
- int result=myadd(1,2);
- dlclose(handle);
- printf("%d\n",result);
- }
以上为调用程序test8.c,
以下为库程序test7.c
C代码
- int output(int a,int b){
- int x=a+b;
- return x;
- }
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
相关热门文章
给主人留下些什么吧!~~
评论热议