java 如何使用dylib_Xcode下使用第三方dylib

如何使用

Use Guidelines

这是apple给出的官方使用说明,结合第一行的描述

Dynamic libraries can be loaded either when the app launches or as it runs. Libraries that are loaded at launch time are called dependent libraries. Libraries that are loaded at runtime are called dynamically loaded libraries.

由此,现在有两种load的方式,第一种作为依赖load,这样的话是在运行之前就配置好的,相当于全局的load。

其次是动态的load,在动态load时,是一个runtime的使用方式,也就是说在具体的code里面需要自己反射lib里面的方法,通过dlopen等api来加载lib,调用方法。

不过,一般我们都会优先考虑使用全局的方式load,那么此时如何让项目自动load?

在build phase里进行copy 动作,将我么需要的lib文件copy到响应的目录下,如framework

在最终build出来的执行文件,使用otool查看lib的加载信息,然后使用install name tool来修改具体的加载路径

这里可以参考stackoverflow的具体问题,最佳答案有详细步骤

需要注意的是,在现在使用了instal name tool之后,这个项目中的这个install后的相关lib属性就已经保存到了项目生成的binary文件中,无论copy到何处都是保留了这个配置信息的

在具体问题中我们看到了类似,@executable_path的写法,这是系统保留的动态获取路径的方法,详细使用可以参考动态路径,其中涉及

@rpath

@loader_path

@executable_path

他们的具体含义,用到的继续学习吧

PS:

在本次项目调试中发现,直接使用xcode的run,那么xcode会自动将引入的全局加载方式的lib文件install到当前product所在的目录,与生成的product平级。从而只要我们在build phase copy这个lib文件到product directory,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值