dyld: Library not loaded

2019-08-05  本文已影响0人  老包黑黑

我们在添加第三方库的时候,经常会遇到如下提示:

dyld: Library not loaded:@executable_path/../Frameworks/XXXX.dylib

Reason: image not found

某个路径下dylib库无法加载,

出现这个问题一般有两种情况:

第一:Embedded Binaries未添加这个库

binaries添加

我们只需要再binaries中手动添加这个库,系统就会去自动加载这个库并识别库里的文件

一般大多数时候可以解决这个问题.

第二:target版本不匹配

当我们xcode支持的系统版本和第三方库中系统支持版本不匹配的时候,也可能出现这个问题,这个时候如果需要动态识别这个文件就不能强引用这个第三方库,就如同代理一样,我们需要把这个库的识别方式改为optional可选项. 

link binary 选项

但是当系统版本为不支持的系统版本时候,仍然会崩溃.

第三:最后一种需要手动copy files

在build phases 中点击+手动添加copy files

new copy files

手动将不加载的三方库添加进去, 注意,第三方lib.a包或者framework包Destination 需要选择framework,不能选择resource.

对于@executable_path执行路径,我们需要新建script phase

new script

我们根据自己的需要写不同的脚本使用不同的解释器,我们可以通过

cat /etc/shells 查看系统支持的解释器. 

例如我用到的:

shell:bin/bash

install_name_tool -change /usr/local/lib/(你的库name).dylib @executable_path/../Frameworks/(你的库name).dylib"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH"

最后:

添加过这些设置,试试执行你的项目吧,应该能解决大多数问题了,欢迎留言相互探讨。

上一篇下一篇

猜你喜欢

热点阅读