当我试图在Mac OS X中运行一个可执行文件时,我得到以下错误

dyld: Library not loaded: libboost_atomic.dylib
  Referenced from: /Users/"Directory my executable is in"
  Reason: image not found
Trace/BPT trap:5

我已经安装了boost库,它们位于/opt/local/lib中。我认为这个问题与可执行文件只在它所在的目录中查找有关,因为当我粘贴'libboost_atomic。Dylib '在那里,它不再介意了。不幸的是,它会抱怨找不到下一个增强库。

有没有简单的方法来解决这个问题?


当前回答

可以使用sudo install_name_tool -change change dylib路径 和 Sudo install_name_tool -id change dylib名称

其他回答

对于我的框架,我使用的是作为git子模块添加的Xcode子项目。

我相信我得到这个错误,因为我正在与一个不同的签名团队签署框架,而不是我的主应用程序。忘记切换到框架)

解决方案是不在框架项目内签名。相反,在主应用程序的目标>通用>框架,库和嵌入式内容部分,通过Embed & sign对框架进行签名。

如果我选择不嵌入或嵌入没有签名,我反而得到错误:

框架不能在使用库验证的进程中使用:映射文件没有cdhash,完全unsigned?代码至少要有特别签名。

可以使用sudo install_name_tool -change change dylib路径 和 Sudo install_name_tool -id change dylib名称

您可以对可执行文件使用otool命令和-L选项,这将显示可执行文件期望这些库的位置。

如果需要更改这些库的路径,请使用install_name_tool命令,该命令允许您设置库的路径。

如果你使用Xcode 11以后:

进入“常规”选项卡,在“框架”、“库”和“嵌入式内容”部分中添加框架。

重要提示:默认情况下,它可能被标记为不嵌入,将其更改为嵌入而不签名,如图所示,你就可以开始了。

对于低于11的Xcode版本:

只需在嵌入式二进制文件部分中添加框架,就完成了。

干杯!

我通过brew install libpng修复了它