dyld: Library not loaded

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

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"

最后:

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容