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 ファイルを他の .h ファイルから大量に #include したためです。解決策は、ほとんどの場合、次の 2 つの簡単な手順です。

  1. できるだけ多くの #include ディレクティブを .m ファイルに移動します
  2. .h ファイルで @protocol および @class 前方宣言を使用します。

.h から .h を #include する必要がある唯一のケースは、実際にクラスを拡張するか、プロトコルを実装する場合です。署名でクラス名またはプロトコル名を使用する必要がある場合は、前方宣言を使用して #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 に答える