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

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++中其他组件方法时效果很好。方便易行!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值