XCode 4添加了dylib

时间:2011-07-23 16:20:01

标签: objective-c cocoa xcode4 dylib

我正在尝试创建然后将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

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

2 个答案:

答案 0 :(得分:37)

问题不在于Xcode在编译时寻找库,这是Simon Whitaker的回答。

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

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

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

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

答案 1 :(得分:2)

Xcode正在/usr/local/lib/查找该库。如果该库位于其他位置,请将该位置添加到“库搜索路径”:

  1. 在Xcode 4中选择项目文件
  2. 选择目标,然后单击“构建设置”选项卡
  3. 确保在过滤条(非基本)
  4. 中选择了全部
  5. 向下滚动到“搜索路径”部分,您将在其中找到“图书馆搜索路径”