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

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


当前回答

我面临的应用程序崩溃的问题引用SIGABRT错误在线程。崩溃的概述是没有加载dyld库和图像没有找到类似的东西。

这是在Xcode 9.3中看到的。我发现的原因是Xcode没有动态地拾取库,所以我必须手动这样做,这解决了我的崩溃问题。

请遵循以下步骤:

进入构建阶段 点击顶部的“+”按钮并选择“新建复制文件阶段” 选择目标为框架,点击下面的“+”按钮添加文件。 选择下面添加其他,点击CMD+SHIFT+G,粘贴下面的路径, /应用程序/ xcode /内容/开发/工具链/ XcodeDefault.xctoolchain / usr / lib /快速/ iphoneos

现在你将能够看到一些swift dylib,选择所有扩展名为.dylib的swift库,然后点击打开。

这些将被添加到app的general选项卡的嵌入式二进制文件中。

在project文件夹中创建一个新组,并添加所有这些库。

现在运行你的应用程序。

其他回答

这应该可以解决问题

brew update
brew upgrade
brew cleanup

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

要解决我的Macbook Catalina 10.15.4上的以下错误:

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
    Referenced from: /usr/local/bin/mongoexport
    Reason: image not found
Abort trap: 6

我运行下面的命令,解决了上面的问题:

brew switch openssl 1.0.2s

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

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

如果使用cmake,在目标属性中添加DYLIB_INSTALL_NAME_BASE "@rpath":

set_target_properties(target_dyLib PROPERTIES
        # # for FRAMEWORK begin
        # FRAMEWORK TRUE
        # FRAMEWORK_VERSION C
        # MACOSX_FRAMEWORK_IDENTIFIER com.cmake.targetname
        # MACOSX_FRAMEWORK_INFO_PLIST ./Info.plist
        # PUBLIC_HEADER targetname.h
        # # for FRAMEWORK end
        IPHONEOS_DEPLOYMENT_TARGET "8.0"
        DYLIB_INSTALL_NAME_BASE "@rpath" # this is the key point
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
        DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM}"
    )

或者在Xcode动态库项目Target -> Build Setting中将动态库安装名库设置为@rpath