Cocoa touch 带有XCode 4.2链接器错误的Facebook iOS SDK 3.1

Cocoa touch 带有XCode 4.2链接器错误的Facebook iOS SDK 3.1,cocoa-touch,xcode4.2,facebook-ios-sdk,Cocoa Touch,Xcode4.2,Facebook Ios Sdk,我刚刚在我的项目中将Facebook iOS SDK从3.0升级到3.1。该项目不再编译。相反,我得到了以下链接器错误: Undefined symbols for architecture i386: "_ACFacebookAppIdKey", referenced from: -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:]

我刚刚在我的项目中将Facebook iOS SDK从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)
政府明确表示:


SDK依赖于其他三个框架(AdSupport、Accounts和 社交)使用iOS6内置的Facebook功能


这些框架在Xcode 4.2中不存在。是否有任何解决方法,例如,我可以下载(在哪里?)并手动将框架添加到我的项目中,这是否足以消除编译错误,或者我是否必须升级到Xcode 4.5?

这些框架是iOS 6的一部分(除了iOS 5中的
帐户
)。如果不升级到Xcode 4.5,进而升级到iOS 6 SDK,您将无法使用它们

如果您担心的话,您仍然可以将部署目标设置为iOS 4.3

我认为你的选择是:

  • 升级至Xcode 4.5,或
  • 使用Facebook SDK 3.0

  • 索布里是对的。升级到Xcode 4.5或使用SDK 3.0,或者如果您想使用3.1,则从github下载源代码,修改构建文件(基本上删除对iOS 6.0提供的框架的引用)并重建SDK。这样,您既可以使用SDK 3.1,也可以在较旧的XCode版本上运行它。

    SDK依赖于其他三个框架(AdSupport、Accounts和Social)

    要添加这些内容,请转到目标摘要窗格的“链接的框架和库”部分,然后添加它们。

    要清楚说明:

    对于XCode 4.5:

    如果您使用FB SDK3.0,则只需添加帐户和FacebookSDK框架

    如果您使用FB SDK3.1,则需要添加帐户、FacebookSDK、社交和AdSupport框架

    如果您使用FB SDK3.2++,请自己检查您可能需要或不需要的其他框架。;)


    希望大家能很好地总结一下。

    以下步骤可能有助于解决此问题

  • 从URL中的链接下载Facebook iOS SDK 3.0
  • 从Mac Documents目录添加FacebookSDK框架
  • 将sqlite3添加到项目中
  • 然后,我尝试了带有以下更改的代码(与FacebookIOSSDK3.1相同)

  • openActiveSessionWithReadPermissions
    替换为
    openActiveSessionWithPermissions
  • 替换
    [FBSession.activeSession handledidebecomeactive]
    [FBSession activeSession]
  • 这对我有用。试试看

    谢谢,
    prodeveloper.

    @marcog您添加了框架吗?project->target->build phases->link binary with libraries->+->选择AdSupport、Accounts和Social我刚刚尝试将这些框架手动添加到项目中(我从另一台机器上的最新开发环境中复制了它们)。更多的错误。无论如何,这将是一个肮脏的黑客导致不可预测的行为。我认为你的答案是正确的。我在Xcode 4.5中遇到了类似的问题。我将它们全部删除,并确保它们在项目文件列表中没有被引用,然后再次阅读。我尝试删除并添加它们,但标识管理器仍然会导致问题。我可以在设备上构建项目,但不能在模拟器上构建项目。我还能做什么?请阅读整个问题。xcode 4.2中没有这样的框架(帐户除外)