19

プロジェクトのFacebookiOSSDKを3.0から3.1に更新しました。プロジェクトはもうコンパイルされません。代わりに、次のリンカーエラーが発生します。

Undefined symbols for architecture i386:
  "_ACFacebookAppIdKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceEveryone", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceFriends", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceOnlyMe", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookPermissionsKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:
      objc-class-ref in FacebookSDK(FBSettings.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Facebookのドキュメントは明確に言っています:

SDKは、iOS6に組み込まれているFacebook機能を使用するために、他の3つのフレームワーク(AdSupport、Accounts、Social)に依存しています。

これらのフレームワークはXcode4.2には存在しません。回避策はありますか?つまり、フレームワークを手動でダウンロードしてプロジェクトに追加できますか?コンパイルエラーを取り除くにはそれで十分ですか、それともXcode 4.5にアップグレードする必要がありますか?

4

5 に答える 5

21

これらのフレームワークは iOS 6 の一部です (iOS 5 の を除いてAccounts)。Xcode 4.5、つまり iOS 6 SDK にアップグレードしないと使用できません。

懸念がある場合は、展開ターゲットを iOS 4.3 に設定することもできます。

あなたの選択肢は次のとおりだと思います:

  1. Xcode 4.5 にアップグレードするか、
  2. Facebook SDK 3.0 を使用します。
于 2012-09-26T14:21:51.300 に答える
9

明確にするために:

XCode 4.5 の場合:

FB SDK3.0 を使用している場合は、アカウントと FacebookSDK フレームワークを追加するだけです。

FB SDK3.1 を使用する場合は、アカウント、FacebookSDK、ソーシャル、および AdSupport フレームワークを追加する必要があります。

FB SDK3.2++ を使用している場合は、他に必要なフレームワークと不要なフレームワークを自分で確認してください。;)

それがすべての人にとってうまくまとめられることを願っています。

于 2012-10-04T15:14:55.193 に答える
6

SDK は、他の 3 つのフレームワーク (AdSupport、Accounts、および Social) に依存しています。

これらを追加するには、ターゲットの [概要] ペインの [リンクされたフレームワークとライブラリ] セクションに移動し、それらを追加します。

于 2012-10-02T22:14:16.490 に答える
0

この問題を解決するには、次の手順が役立つ場合があります

  1. URL http://developers.facebook.com/ios/features/whats-new-ios-sdk-3/にあるリンクから Facebook iOS SDK 3.0 をダウンロードします。
  2. Mac ドキュメント ディレクトリから FacebookSDK フレームワークを追加します。
  3. プロジェクトにsqlite3を追加

次に、 http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/のコードを次のように変更してみました (Facebook iOS SDK 3.1 の場合と同様)。

  1. openActiveSessionWithReadPermissionsと置き換えますopenActiveSessionWithPermissions
  2. [FBSession.activeSession handleDidBecomeActive];と置き換えます[FBSession activeSession];

これは私にとってはうまくいきました。一度試してみてください。

ありがとう、プロ開発者。

于 2013-01-23T15:02:21.773 に答える
0

ソブリは正しいです。Xcode 4.5 にアップグレードするか、SDK 3.0 を使用するか、3.1 を使用する場合は、github からソースをダウンロードし、ビルド ファイルを変更して (基本的に、iOS 6.0 によって提供されるフレームワークへの参照を削除します)、SDK を再構築します。そうすれば、SDK 3.1 を使用したり、古い XCode バージョンで実行したりできます。

于 2012-09-28T00:30:16.523 に答える