美文网首页
dyld:Library not loaded: @rpath/

dyld:Library not loaded: @rpath/

作者: LeiovU | 来源:发表于2022-07-28 18:17 被阅读0次
    截屏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/

          本文链接:https://www.haomeiwen.com/subject/lumxwrtx.html