8

我必须在这里做一些完全愚蠢的事情,但我无法将 PLCrashReporter 框架包含在我的项目中。以下是我为获取框架所采取的步骤:

  1. 从谷歌代码的官方项目网站下载 .dmg 文件
  2. 将 CrashReporter.framework 文件夹复制到我项目的根目录
  3. 通过转到我的项目、选择目标、转到 Build Phases 选项卡、打开 Link Binary With Libraries 部分、单击加号并添加 CrashReporter.framework 文件夹来添加框架

我通过使用在我的类文件中拉入框架

#import <CrashReporter/CrashReporter.h>

当我尝试在 4.3 模拟器下编译时,出现以下错误:

架构 i386 的未定义符号:“_OBJC_CLASS_$_PLCrashReporter”,引用自:AppDelegate+CrashReporting.o 中的 objc-class-ref “_OBJC_CLASS_$_PLCrashReport”,引用自:AppDelegate+CrashReporting.o 中的 objc-class-ref:符号( s) 未找到架构 i386 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

当我在设备下编译时,一切都很好。我需要包含某种标题或库搜索路径吗?

该应用程序在 XCode 3 下编译,在所有配置下都没有问题。

4

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 模拟(即 iPhone 4.3 Simulator)] 并点击构建。
  5. 导航到 PLCrashReporter 的构建目录。对我来说,它是 /Users/username/Library/Developer/Xcode/DerivedData/CrashReporter-(random characters)/Build/Products/Debug-iphonesimulator
  6. 将 libCrashReporter-iphonesimulator.a 从步骤 5 中的构建目录复制到要添加崩溃报告器的 iphone 应用程序项目目录。
  7. 在 xcode 中打开您的 iphone 应用程序项目。
  8. 下载PLCrashReporter 二进制版本并将框架解压缩到本地目录。
  9. 使用此SO post将 CrashReporter 框架添加到您的项目中。
  10. 按照与步骤 9 相同的过程,将 libCrashReporter-iphonesimulator.a 静态库添加到构建阶段的“Link Binary with Libraries”部分。添加静态库时不需要 *.framework 目录。
  11. 查看 Target 中的“Link Binary with Libraries”。确保 libCrashReporter-iphonesimulator.a 列在 CrashReporter 框架上方。您可以拖放以重新排序。

我希望这有帮助。

于 2011-08-02T14:11:25.860 回答
1

对于其他寻找此信息的人:

我遵循了上面给出的相同步骤,但是我遇到了错误。我删除了静态库,只包含了框架(你可以从他们的 dmg 中获得)。

它对我来说非常有效。我认为通过构建项目创建静态库的过程很旧(在他们创建框架之前)。

谢谢。

于 2014-01-15T22:41:21.697 回答
0

不要忘记包括

libstdc++.dylib

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

于 2014-04-06T20:16:38.820 回答