XCode 4中的PLCrashReporter - 不会在Simulator中编译

时间:2011-05-31 20:03:28

标签: xcode4 plcrashreporter

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

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

    我使用

    在我的类文件中拉入框架

    #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 ld:找不到架构i386的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

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

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

3 个答案:

答案 0 :(得分:13)

我遇到了同样的问题,并且能够解决它。以下是我完成的步骤......

  1. 下载PLCrashReporter source release并解压缩。
  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模拟器)],然后点击构建。
  5. 导航到PLCrashReporter的构建目录。对我来说,它是/ Users / username / Library / Developer / Xcode / DerivedData / CrashReporter-(随机字符)/ Build / Products / Debug-iphonesimulator
  6. 将libCrashReporter-iphonesimulator.a从步骤5中的build目录复制到要添加崩溃报告器的iphone应用程序项目目录。
  7. 在xcode中打开您的iphone应用程序项目。
  8. 下载PLCrashReporter binary release并将框架解压缩到本地目录。
  9. 使用此SO post
  10. 将CrashReporter框架添加到您的项目中
  11. 按照与步骤9相同的步骤,将libCrashReporter-iphonesimulator.a静态库添加到构建阶段的“Link Binary with Libraries”部分。添加静态库时不需要* .framework目录。
  12. 在目标中查看“链接二进制文件与库”。确保libCrashReporter-iphonesimulator.a列在CrashReporter框架上方。您可以拖放以重新排序。
  13. 我希望这会有所帮助。

答案 1 :(得分:1)

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

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

它对我来说很完美。我认为通过构建项目创建静态库的过程很古老(在创建框架之前)。

感谢。

答案 2 :(得分:0)

别忘了包含

  

的libstdc ++。dylib

在&#34; Link Binary with Libraries&#34;。