linux下动态库.so文件用法总结

来源:互联网 发布:保湿精华液排行榜 知乎 编辑:程序博客网 时间:2024/05/16 09:14

linux下库文件有两种:一是静态库文件,以.a为后缀的文件。二是动态库文件,以.so为后缀的文件。其二者主要区别在于静态库是在编译时加载,而动态库是在运行时加载。

关于静态库文件使用比较繁多,在makefile中的使用如下例:

LIBS = -L./ -L$(ROOTPATH)/lib/ \
-ltest

这里加载的静态库文件是libtest.a。

如果想要使用动态库中的接口函数,可以使用两种方法。

方法1:

extern "C" int testso1(param1,param2,...);


int testso1(param1,param2,...)
{
code:
return 0;
}

其他地方应用的时候需要利用

#include <dlfcn.h>
#include <stdio.h>
typedef int (*fun)(char *,int);
dp=dlopen("./libtestso.so",RTLD_LAZY);
pFunction=(fun)dlsym(dp,"testso1");
(*pFunction)(strCode,512);
方法2:

将需要的的接口函数放到一个头文件中声明,其他地方引用时只需包含磁头文件。makefile中需要写明.so文件的全称,及准确的路径。

通过对两种文件的比较,个人认为,方法1在c调用c++的方法时效果明显。方法2在c++调用c++中其他组件方法时效果很好。方便易行!


原创粉丝点击