Windows与Linux动态库的两种加载方式

Windows上的动态库(dll)加载方式有两种:
1.静态加载,运用#pargma comment(lib, "xxx.lib")方式,这种方式需要 头文件,lib文件和dll文件配合使用,运行时是直接将动态库加载到内存中的,运用起来也比较方便
2.动态加载,运用LoadLibrary(dllName)方式,这种方式只需要头文件和dll文件就可以运行,需要时加载,不需要是用FreeLibrary(dllName)进行释放。

Linux系上的动态库(so)加载方式也有两种:
1.静态加载,程序编译的时候加上“-l”选项,指定其所依赖的动态库,动态库的生存周期等于进程的生存周期,其加载时机不灵活,但是运用方式,可以直接调用
2.动态加载,主程序编译时候要加入 -ldl (指定dl库),要生成动态库编译需要加入-shared -fPIC,用dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。能够确保多个进程调用时内存中只存在一份,共享库计数会根据调用的多少递加1。标志指明是否立刻计算库的依赖性。如果设置为 RTLD_NOW 的话,则立刻计算;如果设置的是 RTLD_LAZY,则在需要的时候才计算。

另外:如果是动态加载动态库,则Linux下用ldd来查看程序依赖时,是不列出动态库的,因为他是随用随加载的,但是如果用的是静态加载动态库,怎在Linux下用ldd来查看程序依赖时,会列出所依赖的动态库。
Mac OS X系统下查看程序依赖用otool命令,otool -L main;列表main所依赖的库,如果main动态加载了动态库,则不会列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值