【问题标题】:Linking to library链接到图书馆
【发布时间】:2012-07-22 14:53:29
【问题描述】:

我通过MacPorts 安装了ImageMagick。所以所有library 文件都在/opt/local/lib 中,标题在/opt/local/include/ImageMagick 中。它在我的 Mac 上运行良好。在 xCode Build Settings - > Search Paths 中,一切看起来都设置好了。

library 文件添加到Linked Frameworks and Libraries

当我构建我的应用程序时,它看起来正在运行。但是,当我尝试在未安装 ImageMagick 的其他计算机上运行构建的应用程序时,会出现以下错误消息:

如何解决它以使用户能够使用我的应用程序而无需额外安装 ImageMagick 等?如何将所需的库文件链接到我的应用程序(在项目包中)?

【问题讨论】:

    标签: objective-c xcode macos frameworks shared-libraries


    【解决方案1】:

    现在您的链接库是从 /opt/local/lib/ 引用的 ---

    您的问题的解决方案:

    1. 确保安装应用的位置支持库安装到正确的位置
    2. 将动态库与 app bundle 一起携带,并从 app bundle 中引用与 app bundle 启动路径相关的 dyld。

    更新:如果您正在寻找第二个选项 --- 使用此选项,您的库将被放置在您的应用程序包中......因此应用程序可以从应用程序包中引用该库。

    1. 预编译的动态库可以与应用程序一起携带 -- 在 xCode --> 转到目标的构建阶段 --> 构建阶段(复制文件)...这将确保您的动态库被复制到您的应用程序包...
    2. 更新每个动态库中的“安装名称”---您可以使用“otool”命令了解预编译库的当前安装路径,您可以在终端中使用“install_name_tool”命令预编译库安装路径。

    【讨论】:

    • 也许我误会了你,但是... 1. 我使用 MacPorts 安装了 ImageMagick。使用 MacPorts 安装的所有库都放在/opt/local/...。因此,如果应用程序用户是“家庭用户”,他真的没有 MacPorts 和目录 /opt 甚至在他的计算机上都不存在。 2.refere the dyld from the app bundle which will be relative to app bundle launch path.。你能解释一下这一步吗?我真的不知道该怎么做。
    • 为了清楚起见:选项 2 基本上意味着您将在应用程序包中包含 ImageMagick 库,并引用该库而不是 /opt/local/lib 中安装的库。使用这种方法时,您应用的用户不必自己安装 ImageMagick 库。
    【解决方案2】:

    ImageMagick 论坛不支持它,StackOverflow 也不支持,所以我想这是不可能的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多