未定义的架构i386符号:Facebook Audience Network(需要帮助!)

问题描述:

我已经阅读了近50个关于这方面的主题,关于将框架链接到Xcode项目,但我还没有找到一个涵盖了一个问题, m拥有Facebook的受众网络框架。未定义的架构i386符号:Facebook Audience Network(需要帮助!)

我正在使用Xcode 4.2.3(我在OS X Lion的旧Mac上 - 不要问!),使用Facebook SDK 3.2.1构建iOS 6.1。

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

我用下面的框架:AdSupport,StoreKit,CoreMotion,UIKit中,基金会,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”,从引用: objc级-REF在FBAudienceNetwork(FBAdUtility.o)​​ LD:找不到架构i386的符号(S) 铛:错误:链接器命令失败,退出代码1(使用-v查看调用)

我已经使Foundation.framework为可选。构建设置armv7,armv7s,iOS 6.1,仅限Simulator。仅建立主动架构是/否。

+0

在模拟器和设备上运行时是否收到这些错误?你有没有检查过框架是否包含在项目中?检查TargetSettings - >构建阶段 - >编译源 - >链接库与二进制文件 - > FacebookAudienceNetwork.framework。你正在运行哪个iOS版本? – 2015-02-09 04:33:44

+0

我只在模拟器上运行此刻。构建设置; armv7 armv7s;构建活动架构是/否。所有框架都包含在项目中。 – Chris 2015-02-09 19:22:41

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

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

如果仍然出现“_OBJC_CLASS _ $ _ NSURLSession”错误,请尝试在构建阶段中将Foundation Foundation框架设置为“可选”,从而弱化Foundation框架,链接二进制文件与库。

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

+0

嗨Erika, 感谢您的帮助。 我已经添加了QuartzCore。框架到项目,并且这清除了三个CA *链接器错误,但NSURLSessio错误仍然出现。 我已经弱联系基金会框架,但错误仍然出现; 为i386硬件架构未定义符号: “_OBJC_CLASS _ $ _ NSURLSession”,从引用: objc级-REF IN FBAudienceNetwork(FBAdUtility.o)​​ LD:符号(多个)未找到i386硬件架构 铛:错误:连接器命令退出代码1失败(使用-v查看调用) 其他建议? 再次感谢! – Chris 2015-02-09 19:02:07

+0

我没有找到一个很好的解决方案,没有明显的缺点。尝试使用SDK 3.19附带的受众网络版本(https://developers.facebook.com/docs/ios/downloads)。 – 2015-02-10 03:48:48

+0

SDK 3.23.1刚刚发布,其中包括对此的修复。试试看,并让我知道! – 2015-02-25 00:06:46

NSURLSession已添加到iOS 7.0。在iOS 6.0的设备上运行时,在您的应用中对其进行任何不当引用都会导致此问题。您需要使用适当的技术来确保在iOS 6.0下不会引用该类,或者使您的部署适用于iOS 7.0。

+0

谢谢丹。鉴于我在使用OS X Lion的Mac上,因此无法升级到Xcode 5或更高版本(支持构建到iOS 7.0) - 关于如何确保从未引用该类的任何建议? – Chris 2015-02-09 22:27:56