【问题标题】:Xcode 4 adding dylibXcode 4 添加 dylib
【发布时间】:2011-10-11 17:12:04
【问题描述】:

我正在尝试创建 dylib,然后将其添加到项目中。 我通过使用“Cocoa-Library”模板并将类型设置为“Dynamic”来创建它(不确定它应该是动态的还是静态的......)。然后我创建了一个名为 Test 的简单 obj-c 类,并在其中编写了一个方法来打印输出到控制台。

我编译并使用了生成的 .dylib 文件并将其放入另一个项目中。现在,每当我尝试使用它时,我都会在运行时收到此消息”

dyld: Library not loaded: /usr/local/lib/TESTLib.dylib
  Referenced from: /Users/***/Library/Developer/Xcode/DerivedData/TestingDYLIB-axmoocnxbwznoyerfogosumqufxc/Build/Products/Debug/TestingDYLIB.app/Contents/MacOS/TestingDYLIB
  Reason: image not found

我还创建了一个复制文件阶段并将目标设置为“框架”。我仍然得到同样的错误。 我做错了什么?

【问题讨论】:

    标签: objective-c cocoa xcode4 dylib


    【解决方案1】:

    Xcode 正在 /usr/local/lib/ 中查找库。如果图书馆位于其他位置,请将该位置添加到您的图书馆搜索路径中:

    1. 在 Xcode 4 中选择项目文件
    2. 选择目标,然后单击构建设置选项卡
    3. 确保在过滤器栏中选择“全部”(不是“基本”)
    4. 向下滚动到“搜索路径”部分,您会在其中找到库搜索路径

    【讨论】:

    • 我将 .dylib 拖到 xcode 中的 frameworks 文件夹中。该库位于:/Users/*****/Desktop/TestingDYLIB 已存在于库搜索路径中
    • 我这样做了,并将位置设置为包含 .dylib 的我的位置,但仍然找不到它
    【解决方案2】:

    问题不在于 Xcode 在编译时在哪里寻找库,这是 Simon Whitaker 的答案所针对的。

    问题是使用 dylib 的应用程序在运行时找不到它。当构建使用动态库的应用程序时,它会将 dylib 的 install_name 复制到输出二进制文件中。

    创建一个复制文件阶段并将 dylib 复制到应用程序包的 Frameworks 子目录是正确的做法。

    但是,您需要执行额外的步骤。您需要使用适合捆绑应用程序的 install_name 编译动态库。默认情况下,使用 /usr/local/lib 的 install_name 创建动态库。该应用程序无法在那里找到您的图书馆,因为它不存在。即使您将库放在那里,您的用户也肯定不会拥有它,因此这是错误的解决方案。

    正确的解决方案是将库与应用程序捆绑在一起。要设置动态库的安装名称,请进入动态库项目并将“动态库安装名称”选项设置为:@executable_path/../Frameworks/libmydynamiclibrary.dylib

    【讨论】:

    • 我也有同样的问题。我无法完成解决方案的最后一步。为某些框架路径设置名称的选项在哪里。
    • 不理解您的问题。您设置的选项是“动态库安装名称”
    • 将“动态库安装名称”选项设置为:@executable_path/../Frameworks/libmydynamiclibrary.dylib。我不明白如何获取此路径。我可以从哪里获取?
    • 我如何“进入动态库项目”?,因为我下载了一个 .dylib,但我不知道如何将它链接到可移植的项目
    • 如果我有一个库和另一个依赖于第一个库的库,是否可以为每个库创建一个 .framework,其中包含标头和包含正确安装名称的 dylib?这将只有两个库的 dylib,而不是源代码。
    猜你喜欢
    • 2012-05-08
    • 2016-12-28
    • 2013-07-15
    • 2016-06-04
    • 1970-01-01
    • 2011-09-27
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多