PLCrashReporter在XCode 4中无法在模拟器中编译

8
我在这里一定做了什么愚蠢的事情,但我无法将PLCrashReporter框架包含在我的项目中。以下是我获取框架的步骤:
1.从Google Code官方项目网站下载.dmg文件。 2.将CrashReporter.framework文件夹复制到我的项目根目录中。 3.通过进入我的项目,选择目标,转到“Build Phases”选项卡,打开“Link Binary With Libraries”部分,单击加号并添加CrashReporter.framework文件夹来添加框架。
我正在使用以下代码在我的类文件中引入该框架:
#import 当我尝试在4.3模拟器下编译时,我会收到以下错误:
Undefined symbols for architecture i386: "_OBJC_CLASS_$_PLCrashReporter", referenced from: objc-class-ref in AppDelegate+CrashReporting.o "_OBJC_CLASS_$_PLCrashReport", referenced from: objc-class-ref in AppDelegate+CrashReporting.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
当我在设备下编译时,一切正常。是否需要包含某种头文件或库搜索路径?
在XCode 3下,该应用程序在所有配置下均可以编译而不出现问题。
3个回答

13

我曾经遇到了同样的问题并成功解决。以下是我完成的步骤:

  1. 下载 PLCrashReporter 源码包 并解压。
  2. 打开 PLCrashReporter Xcode 项目。此项目已设置为使用旧版 SDK,需要更新每个目标所需的 SDK 以消除警告。这也是编译下一步所必需的。
  3. 导航至 CrashReporter-iPhoneSimulator 目标。在 Build Settings 下:a)将 "Perform Single-Object Prelink" 设置为 "No",b)将 "Mach-O Type" 设置为 "Static Library"。
  4. 选择 CrashReport-iPhoneSimulator:[IOS simulation (ie iPhone 4.3 Simulator)],然后点击“build”。
  5. 导航至 PLCrashReporter 的 build 目录。对我而言,路径为 /Users/username/Library/Developer/Xcode/DerivedData/CrashReporter-(随机字符)/Build/Products/Debug-iphonesimulator。
  6. 将步骤 5 中的 libCrashReporter-iphonesimulator.a 从 build 目录复制到你想要添加崩溃报告器的 iPhone 应用程序项目目录中。
  7. 在 xcode 中打开你的 iPhone 应用程序项目。
  8. 下载 PLCrashReporter 二进制包 并提取框架到本地目录。
  9. 使用此 SO post 将 CrashReporter 框架添加到你的项目中。
  10. 按照步骤 9 的相同过程,将 libCrashReporter-iphonesimulator.a 静态库添加到“Build Phases”下的“Link Binary With Libraries”部分中。当添加静态库时不需要 *.framework 目录。
  11. 检查 Target 中的“Link Binary With Libraries”,确保 libCrashReporter-iphonesimulator.a 在 CrashReporter 框架之上列出。你可以拖放来重新排序。

希望这能帮到你。


你好,第一点中的链接显示有13个下载选项。我们应该下载哪个文件? - Confused
是不是可以给已经设置好的项目提供访问权限?这太复杂了,我认为不是每个人都能理解每一步。我也不知道第二步中你在说哪些SDK。 - Alex Cio

1

对于其他正在寻找这些信息的人:

我按照上面给出的相同步骤进行了操作,但是我遇到了错误。我删除了静态库,并仅包含框架(可以从他们的 dmg 中获取)。

对我来说它完美地工作了。我认为通过构建项目创建静态库的过程已经过时(在他们创造框架之前)。

谢谢。


它们中哪些是静态库?也许您可以粘贴一个链接并更详细地解释步骤。 - Alex Cio

0
不要忘记包含

libstdc++.dylib

在“链接二进制文件和库”中。


有什么建议为什么应该包含这个库吗?它与PLCrashReport有关。 - Alex Cio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接