当我试图在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 '在那里,它不再介意了。不幸的是,它会抱怨找不到下一个增强库。

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


当前回答

在我们的例子中,它是一个基于Xcode 11.5构建的iOS应用,使用cocoapods(如果你愿意,也可以是cocoapods-binary)。

我们看到了这样的崩溃:

dyld: Library not loaded: @rpath/PINOperation.framework/PINOperation
  Referenced from: /private/var/containers/Bundle/Application/4C5F5E4C-8B71-4351-A0AB-C20333544569/Tellus.app/Frameworks/PINRemoteImage.framework/PINRemoteImage
  Reason: image not found

原来我必须删除pod缓存并重新运行pod安装,所以Xcode会指出这个差异:

其他回答

我通过brew install libpng修复了它

我忘记添加use_frameworks了!在我的播客里。我把它加回来,它起作用了。

如果你使用Xcode 11以后:

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

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

对于低于11的Xcode版本:

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

干杯!

在目标的General选项卡中,有一个称为框架、库和嵌入式内容的部分

点击+号,添加所需的框架,崩溃就解决了。

这是我提出这个问题的理由:

dyld: Library not loaded: /System/Library/Frameworks/AVFAudio.framework/AVFAudio   Referenced from: /private/var/containers/Bundle/Application/B6724E76-E704-46A2-8637-F43277018CE2/MyFrameworkUsageSample.app/Frameworks/MyFramework.framework/MyFramework Reason: image not found dyld: launch, loading dependent libraries DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib

我在创建自己的框架MyFramework——其中使用了Apple框架。并使用最新的部署目标(iOS 16)构建xcframework。而在TestApp中需要在iOS 13+上运行。测试设备使用的是iOS 15。

因此,带有MyFramework的TestApp在模拟器(iOS16)上成功启动。但不是在设备上。

解决方案:在MyFramework中-将部署目标更改为所需的iOS。并重新生成框架。或者,如果您使用的是第三方框架,请供应商支持您的最小部署目标。

所以错过了在构建之前更改xcframework中的最小部署目标-和Apple日志一样非常有用))