dyld:Library not loaded: @rpath/libswiftCore.dylib

截屏2022-07-26 14.51.03.png

问题描述:macOS app应用包含二进制程序,在10.14.6以下直接运行二进制程序报错。

解决步骤:
1.查看工程引用的libswiftCore 库的路径设置的是否正确,一般动态库会设置@rpath,方便调用的程序引用,调用的程序需要在Build Settings -> Runpath search Path 设置加载路径


截屏2022-07-28 18.01.49.png

关于@rpath(变量,然后基于变量得到相对路径,谁链接它谁来提供)、@ executable_path(表示可执行程序所在的目录,解析为可执行文件的绝对路径)、 @loader_path(二进制程序加载时的路径)可自行搜索。
其实路径设置的没有问题,继续查。

2.看看当前二进制程序所加载的动态库
终端,命令:otool -L 程序名

如:
截屏2022-07-28 18.08.38.png

可以发现报错的@rpath/libswiftCore.dylib
为什么程序调用的时候没有找到?

这时候我们可以看下我们程序给@rpath设置的值,就是项目工程里设置的Runpath search Path
命令:otool -l 程序名

如:
截屏2022-07-28 18.11.46.png

可以看到 LC_RPATH ,这个值就是我们工程设置的路径

3.为啥@rpath都设置了还是找不到动态库?目前想到的解决方式就是 将程序内 Frameworks路径加到@rpath下,可在工程配置添加一条路径。如下:


image.png

重新打包安装,问题即可解决!

如要验证第三步,可直接用命令添加@rpath
终端,命令:
cd /Applications/AiSDP.app/Contents/MacOS
ls
install_name_tool -add_rpath /Applications/AiSDP.app/Contents/Frameworks UTun

运行 ./UTun 查看结果

你可能感兴趣的:(dyld:Library not loaded: @rpath/libswiftCore.dylib)