使用私有dylib / framework构建Cocoa应用程序包

时间:2011-11-12 04:44:09

标签: objective-c xcode cocoa frameworks build

我使用xcode 4构建一个带有私有dylib / framework的cocoa应用程序。

在我的开发Mac中,我将dylib放在/ usr / local / lib目录中,并将其拖到项目中。

该应用程序已编译并在我的计算机上运行完美。

要将此应用程序分发到其他Mac,我创建一个文件构建阶段的副本,并说“将该dylib复制到Frameworks目录”。

应用程序已成功构建,我确实看到dylib已复制到应用程序包中的Frameworks目录。

问题是当我在另一台没有安装此dylib的普通Mac上运行此应用程序时。我收到一个错误说:

dyld: Library not loaded: /usr/local/lib/mylib.dylib

1 个答案:

答案 0 :(得分:11)

问题来自于您将框架复制到应用程序包中,因此它可以在以下位置使用:

 <you_app_path>/Contents/Frameworks

但是您尝试从部署计算机上不可用的/usr/local/lib加载它。来自Apple Framework Programming Guide

  

要在应用程序中嵌入框架,您必须采取以下几个步骤:

     

您必须配置应用程序目标的构建阶段,以将框架放在正确的位置。

     

您必须配置框架目标的安装目录,该目录告诉框架它将存在的位置。

     

您必须配置应用程序目标,以便它引用其安装目录中的框架。

现在,你说构建阶段是好的;我还假设您正确发送了应用程序目标构建设置。剩下的就是配置框架目标的安装目录。

如果您没有自己构建框架,您应该能够通过更改框架安装路径来修复此问题,以便相对于加载程序(您的应用程序)定义它,类似于:@loader_path/../Frameworks/(或@executable_path/../Frameworks)。您可以通过install_name_tool

来实现

如果您自己编译私有框架,则可以在Xcode构建设置中定义其安装位置。