如何向iPhone项目添加第三方框架?

如何向iPhone项目添加第三方框架?,iphone,cocoa,xcode,dyld,Iphone,Cocoa,Xcode,Dyld,我正在尝试在我的iPhone应用程序中使用PLDatabase框架。我已经将框架添加到我的Xcode项目中。但是,当我运行我的应用程序时,它会崩溃,并出现以下错误: dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase Referenced from: /Users/todd/Library/Application Suppor

我正在尝试在我的iPhone应用程序中使用PLDatabase框架。我已经将框架添加到我的Xcode项目中。但是,当我运行我的应用程序时,它会崩溃,并出现以下错误:

dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase
  Referenced from: /Users/todd/Library/Application Support/iPhone Simulator/User/Applications/BB3C66B2-A5BB-4329-B163-AB0072411AF1/Congress.app/Congress
  Reason: image not found
我不确定该框架需要驻留在磁盘上的什么位置才能找到


谢谢

iPhone不支持嵌入式框架的动态链接。虽然您可能能够欺骗模拟器使其工作,但它无法在设备上工作。如果要使用代码,必须为框架构建静态库(libpldatabase.a),然后将它们链接到应用程序


Xcode GUI没有为静态链接提供良好的界面,您需要在构建prefs(-lpldatabase-L/which/dir/it/is/in)中添加适当的标志。

RE@mipadi:ZeroLink在Xcode 3.1中被删除,并且不适用于iPhone SDK。正确的答案是“路易斯”;iPhone不支持在开发人员创建的应用程序中动态加载框架


Xcode确实为静态库提供了良好的用户界面;只需将它们拖到项目中,它们就被添加到链接阶段。无需对链接器标志大惊小怪。当您需要使用这些静态库提供的标题时(然后您需要手动添加标题搜索路径),或者当静态库与可用的动态库冲突时(此时您必须手动添加-l标志)。

iPhone不支持动态链接,这并不是严格的事实。事实上,应用商店安装的应用程序无法动态链接

应用商店/iTunes将程序安装到/private/var/mobile/。。。目录在该子目录中打开的任何程序都会被删除,并且在打开时会被剥夺某些权限。chrooted进程不能分叉,不能在后台运行,不能加载动态库,也不能将文件保存在磁盘的小保护区之外(照片目录中的照片除外)

这就是说,iPhone运行的是一个支持动态链接的现代操作系统。“越狱”的行为实际上是在chroot-jail之外安装一个程序,然后可以执行诸如fork、将文件保存到磁盘上的其他位置以及加载动态代码之类的操作

苹果(以及开放式iPhone社区)在手机上运行着大量程序(如MobilePhone、Mobile Safari和SpringBoard应用程序),这些程序可以在后台运行并加载库。它们被放置在磁盘上的不同位置(/private/var/stash/Applications)

所以。。。如果要在应用商店中销售应用,则无法加载动态库。对大多数人来说,这意味着你根本无法加载它。但是如果你想通过cydia(一种常见的越狱手机应用程序安装程序)发布你的应用程序,那么你可以通过越狱手机和加载Dynamic库来逃脱。事实上,由于itunes安装过程是罪魁祸首,正如您所了解的,您甚至无法从自己的应用程序加载动态库,并将其写入自己的手机中。。。除非你越狱