0

我刚刚将 AWSIOSSDK.framework 和 Facebook SDK 一起包含在我的项目中,然后出现构建错误:

ld:在 /Users/tom8/Desktop/site1/site1/facebook-ios-sdk/libfacebook_ios_sdk.a(SBJsonParser.o) 和 /Users/tom8/Desktop/AWSiOSSDK.framework/AWSiOSSDK(SBJsonParser.o) 中重复符号 _OBJC_METACLASS_$_SBJsonParser ) 对于架构 i386

我使用 iOS Facebook SDK 静态库,所以我不能简单地删除 facebooksdk 文件夹中的 sbjson 文件。我还尝试删除 AWSIOSSDK 文件夹中的 sbjson 文件,但它也不起作用。有人可以给我一些建议吗?

4

2 回答 2

1

几乎无一例外,当我得到重复的符号构建错误时,这是​​因为我从其他 .h 文件中#include-ing .h 文件过多。解决方案几乎总是这两个简单的步骤:

  1. 将尽可能多的#include 指令移动到 .m 文件中
  2. 在 .h 文件中使用 @protocol 和 @class 前向声明。

您需要从 .h 中#include .h的唯一情况是您实际扩展类或实现协议时。如果您只需要在签名中使用类名或协议名,请使用前向声明并将#include 移动到 .m 文件中。

例子:

foo.h

#include "Bar.h"
#include "BazProtocol.h"
#include "BarDelegateProtocol.h"
@interface Foo:NSObject <BarDelegate>
@property (strong, nonatomic) id<Baz> myBaz;
@property (strong, nonatomic) Bar *myBar;
@end

变成

#include "BarDelegateProtocol.h"
@class Bar;
@protocol Baz;

@interface Foo:NSObject
@property (strong, nonatomic) id<Baz> myBaz;
@property (strong, nonatomic) Bar *myBar;
@end
于 2012-07-16T05:21:36.670 回答
0

我也有同样的问题。您可以从 Facebook 项目本身删除文件,但不能从框架中删除。

所以点击:

facebook-ios-sdk.xcodeproj(打开文件内容)-> FBConnect(查看文件夹内容)-> JSON(查看文件夹内容)-> 删除 SBJsonWriter 和 SBJsonParser。

尝试编译。你应该很高兴去!

伊娃

于 2012-08-18T18:22:24.470 回答