- 论坛徽章:
- 0
|
![]()
使用动态链接库,我认为,再比较大的程序运行过程中,是一种很有优势的。所以就花了一天时间来学习一下。
使用动态链接库,需要了解一下内容
头文件:
函数:
void *dlopen(const char *filename, int flag);
const char *dlerror(void);
void *dlsym(void *handle, char *symbol);
int dlclose(void *handle);
相关的信息可以通过 man dlopen查询
在编译动生成态链接库的时候,
需要参数 -shared
在使用动态链接库的时候,
需要参数 -ldl
其他相关参数有
-fpic -fPIC -rdynamic
如有库函数文件Lib.c, 主函数文件Main.c
则有如下Makefile
all: comple linkcomple: gcc -c Lib.c -o Lib.o gcc -c Main.c -o Main.olink: gcc -shared Lib.o -o Lib.so gcc -ldl Main.o -o Main
另外,在C++中使用动态连接库的时候,请注意:
必须用
extern "C"{}
将动态苦定义为C的编译连接方式
否则由于C++命名方式于C不同,会造成生成的动态链接库不能使用(无法定位或函数)
这里上传一个使用动态链接库的例子
![]()
文件:dynamic.tar.gz
大小:0KB
下载:
下载
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22240/showart_253461.html |
|