6

我有一个正在处理的现有项目,我最近决定更新我的 iPhone SDK 并更新到最新的 3.0 SDK。

我更新了我的 SDK 并打开了我现有的项目。果然有一些问题,包括一些证书问题等等。无论如何,谷歌和我能够解决其中的大部分问题,但我希望成为我的最后一个问题没有任何运气。

在模拟器中运行我的程序时,我现在得到

dyld:库未加载:/System/Library/Frameworks/UIKit.framework/UIKit 引用自:/Developer/iGameLib/iGameLib/build/Debug-iphonesimulator/iGameLib.app/iGameLib 原因:找不到图像

现在,我发现 UIKit 已移至

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0sdk/System/Library/FrameWorks/UIKit

我已经更新了我的目标和项目设置以指向那个新的框架位置,但是当我构建它时,没有运气。

我也尝试清除模拟器的应用程序和设置,但仍然没有运气。

当我运行“干净”菜单项时,引用 .app 被清除,我已经确认了这一点,所以很明显我的项目设置中的某些东西仍然指向使用旧的 UIKit 位置。

我应该在哪里寻找?

我已经尽我所能来帮助自己,但恐怕我在这里不知所措。我在目标设置、项目设置、plist 或项目中的任何其他文件下都看不到它。

4

7 回答 7

10

我遇到了同样的错误

dyld:库未加载:/System/Library/Frameworks/UIKit.framework/UIKit

我的解决方案只是退出 Xcode 并重试。

于 2010-03-12T08:38:37.227 回答
4

好的,所以我有答案了!!!

很简单,Xcode 没有正确更改实际 .xcodeproj 文件中的所有变量。所以,这是我采取的步骤。

离开 Xcode,你必须在终端上完成这项工作。打开一个终端并转到您的项目所在的位置。找到您的 .xcodeproj 并像目录一样进入它。它看起来像 finder 中的实际文件,但它是那些包目录之一。

现在,我无法让 textedit 允许我编辑它,但你可以进入 nano,就像我一样

sudo nano project.pbxproj 位于我的 .xcodeproj 文件/文件夹/包/whatever 下。

在此文件中,您需要找到设置 SDKROOT 的位置。可能有几个地方引用了它,但您正在寻找 SDKROOT = iphoneos2.2.1 或类似的东西。将所有这些(有几个)更改为 SDKROOT = iphoneos3.0

现在,你已经成功了一半。执行 ctrl x 并保存文件。接下来,您将执行 ls 并找出 .pbxuser 文件是什么。我的是 myname.pbxuser。运行相同的命令

sudo nano myname.pbxuser

在这个文件中,有大量对 2.1 iphone sdk 目录的引用。搜索/替换 iPhoneSimulatorOLDVERSION.sdk,在我的例子中是 iPhoneSimulator2.1.sdk 并将 2.1 更改为 3.0。不过要非常小心,我不想知道当你把这个文件弄乱时会发生什么。

保存并打开 xcode。清理项目并构建并运行。快!

于 2009-06-19T20:24:15.843 回答
2
  1. 检查您的目标设置
    确保您实际上链接到目标中的所有这些框架(在“链接二进制文件与库”下检查)

  2. 确保您已选择 3.0 sdk 作为您的基础 SDK

  3. 创建一个空白项目并像以前一样添加您的框架;如果您仍有问题,可能是 SDK 安装错误

顺便说一句,您不必重新添加 sdk 框架,因为路径是相对于当前 SDK

只是想提供帮助......不确定我可以从这里调试:)

于 2009-06-19T07:57:40.697 回答
1

我刚刚从“Frameworks”文件夹中删除了 UIKit.framework,右键单击并再次将其添加回来。干净的构建,没有问题..

于 2010-01-11T09:23:15.067 回答
1

我在 Xcode 上遇到过一些类似的问题,似乎没有明显的原因。事实是,Xcode 仍然到处都有 bug,有时你会碰壁。

我的经验:与您的情况有点类似,在一个特定的场合,我正在工作的一个 Xcode 项目由于某种神秘的原因而停止构建,并且没有任何清理、谷歌搜索或 SO-ing 为我提供任何答案。所以我简单地创建了一个 FRESH,NEW 项目,并将我损坏的项目中的源代码填充到新项目的源代码中。新项目使用相同的源、库、资源、设置,请注意——但它的构建没有任何问题。转移大约需要 20 到 25 分钟,但考虑到我花了几个小时试图解决一个不会在损坏的项目中显示出来的错误,所以时间非常值得。

所以,我建议做我所做的事情:也许尝试创建一个新项目并将您的旧源和资源转移过来。

祝你好运

于 2009-06-19T07:13:06.840 回答
0

在没有调试的情况下启动我的应用程序时出现同样的问题。以我的经验,生成的二进制文件似乎不是罪魁祸首。

我从 xcode 向导创建了一个应用程序,它确实在模拟器中启动正常(我们称之为 testApp,我的应用程序被称为 myApp),我试图找出与我的应用程序的区别在哪里。

otool -L myApp 为框架提供正确的(相对路径),与 testApp 相同

ps -E 与启动 testApp 时这些变量的值相比,ld 定位框架所需的 DYLD_ROOT_PATH、DYLD_FALLBACK_FRAMEWORK_PATH、DYLD_FRAMEWORK_PATH、DYLD_LIBRARY_PATH 环境变量对于 myApp 来说是可以的

我怀疑问题出在应用程序启动后 XCode 和模拟器之间的通信中……尽管我找不到问题所在……

有效的解决方案(至少对我来说)肯定有一些很大的副作用,但它是:退出 xcode 浏览包 myApp.xcodeproj 的内容解锁 .model1v3 和 .pbxuser 进行修改(信息面板中的锁定(cmd-我在文件上))删除这两个文件启动 xcode 并重试从那里启动您的应用程序

于 2010-01-28T09:06:55.710 回答
0

我在使用 Xcode 3.2.1 时遇到了同样的问题,但它以更简单的方式解决了。我意识到我最近禁用了目标的环境变量,特别是与内存调试有关的环境变量(NSDebugEnabled、NSZombieEnabled、NSAutoreleaseFreedObjectCheckEnabled、MallocStackLogging、MallocStackLoggingNoCompact)。删除环境变量后,该应用程序在模拟器中运行了一次,但此后再也没有运行过。

退出 Xcode、模拟器、重新启动 Xcode 并彻底清除目标(包括它的依赖项)使我回到了一个良好的状态。

于 2009-12-10T23:45:26.843 回答