我试图使用PLDatabase框架在我的iPhone应用程序。我已经添加了框架,以我的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的图形用户界面不提供静态链接一个漂亮的界面,你需要在构建首选项添加合适的标记(-lpldatabase -L /不管/ DIR /这/是/中)。

其他提示

这实际上并不是严格诚然,iPhone不支持动态链接。什么是真正的是,通过应用商店安装的应用程序无法动态链接。

在应用程序商店/ ituned安装程序到/私营/无功/移动/ ...目录。打开任何程序,生活在这个子目录是chroot的并已开通的时候剥夺某些权利。在chroot进程不能叉,他们不能在后台运行,它们无法加载动态库,他们不能在磁盘的他们的小保护区以外的保存文件(有照片的例外照片目录)。

这是说,在iPhone运行的现代操作系统,支持动态链接就好了。 “越狱”的行为实际上是安装在chroot监牢,然后可以做这样的事情叉,并保存在磁盘上的文件到其他地方,并加载动态代码之外的程序。

苹果(和开放iPhone社区)拥有大量的在手机上运行的程序(如MobilePhone,移动Safari和跳板的应用程序),可以在后台加载库运行。它们被放置在不同的地方在磁盘上(/私营/无功/藏匿/应用程序通常)。

所以...如果你想卖掉你的应用程序在App Store,你不能加载一个动态库。这对于大多数人来说意味着你不能加载它。但是,如果你想发布你的苹果蠹通过应用程序(一个共同越狱的手机应用程序安装程序),那么你就可以越狱手机和装载您的dynaamic库脱身。事实上,由于iTunes的安装过程是罪魁祸首,因为你已经学会了,你甚至不能加载从自己的应用程序一个dylib,你写你自己的手机...除非你越狱了。

RE @mipadi:ZeroLink在Xcode 3.1除去和用于iPhone SDK不存在。正确答案是路易; iPhone不支持开发人员创建的应用程序动态加载框架。

的Xcode确实有静态库良好的用户界面;只是将它们拖动到项目,他们正在添加到链接阶段。无需使用连接标志大惊小怪。问题是当你需要使用这些静态库(那么你需要手动添加标题搜索路径),或者提供的头文件与可用dylib静态库的冲突(这时候你必须手动添加-l标志)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top