0

我在这里阅读了近 50 个线程,关于将框架链接到 Xcode 项目,但我还没有找到一个涵盖我在 Facebook 的 Audience Network 框架中遇到的问题。

我正在使用 Xcode 4.2.3(我在一台装有 OS X Lion 的旧 Mac 上——别问!),为 iOS 6.1 构建,使用 Facebook SDK 3.2.1。

我正在尝试在特定的视图控制器中测试横幅广告格式,但是,每次构建代码时都会出现错误,完全基于教程,甚至 Facebook 的示例代码也没有编译。我已经添加FBAudienceNetwork.framework到我机器上的几乎每个文件夹中,通过拖放添加,以及通过 Link Binary with Libraries 选项添加。我试图更改框架搜索路径,但无济于事。

我正在使用以下框架:AdSupport、StoreKit、CoreMotion、UIKit、Foundation、CoreGraphics

收到以下错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CAShapeLayer", referenced from:
      objc-class-ref in FBAudienceNetwork(FBAdChoicesView.o)
  "_OBJC_CLASS_$_CATransaction", referenced from:
      objc-class-ref in FBAudienceNetwork(FBAdUtility.o)
      objc-class-ref in FBAudienceNetwork(FBAdMediumRectangleView.o)
  "_OBJC_CLASS_$_NSURLSession", referenced from:
      objc-class-ref in FBAudienceNetwork(FBAdUtility.o)
  "_kCATransactionDisableActions", referenced from:
      -[FBAdMediumRectangleView updateViewForSize:view:] in FBAudienceNetwork(FBAdMediumRectangleView.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

有什么建议么?

更新:在 Quartzcore.framework 中添加,错误现在减少到;

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

我已将 Foundation.framework 设为可选。构建设置 armv7、armv7s、iOS 6.1、仅限模拟器。仅构建活动架构 是/否。

4

2 回答 2

1

我是 Facebook Audience Network 团队的一名软件工程师,我有一些建议可能会有所帮助。

尝试将“QuartzCore.framework”添加到您的目标。这应该可以解决 _OBJC_CLASS_$_CA* 链接器错误。带有“CA”前缀的类是 QuartzCore/Core Animation 的一部分。

如果仍然出现“_OBJC_CLASS_$_NSURLSession”错误,请尝试通过在 Build Phases、Link Binary With Libraries 中将“Foundation.framework”设置为“optional”来弱链接 Foundation 框架。

在这些步骤之后,您应该能够成功构建。希望有帮助!

于 2015-02-09T08:05:30.007 回答
0

NSURLSession在 iOS 7.0 中添加。当在 iOS 6.0 的设备上运行时,在您的应用程序中对它的任何不当引用都会导致此问题。您需要使用适当的技术来确保在 iOS 6.0 下永远不会引用该类或使您的部署目标为 iOS 7.0。

于 2015-02-09T22:07:11.507 回答