Xcode 4添加dylib

问题描述 投票:17回答:2

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

我编译并使用了生成的.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

我还创建了一个“复制文件”阶段,并将目标设置为“ Frameworks”。我仍然遇到相同的错误。我在做什么错?

objective-c cocoa xcode4 dylib
2个回答
37
投票

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

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

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

但是,您需要执行其他步骤。您需要使用适用于捆绑软件应用程序的install_name编译动态库。默认情况下,将创建一个动态库,其install_name为/ usr / local / lib。该应用程序在那里不存在,因此找不到该库。即使您将库放在那里,您的用户也肯定不会拥有它,所以那将是错误的解决方案。

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


2
投票

Xcode在/usr/local/lib/中寻找该库。如果图书馆在另一个位置,则将该位置添加到您的图书馆搜索路径:

  1. 在Xcode 4中选择项目文件
  2. 选择目标,然后单击构建设置选项卡
  3. 确保在过滤器栏中选择全部(不是基本)
  4. 向下滚动到“搜索路径”部分,您将在其中找到“图书馆搜索路径”>
© www.soinside.com 2019 - 2024. All rights reserved.