链接器错误构建项目与Facebook SDK

时间:2012-02-26 03:32:15

标签: ios facebook

我刚刚将最新的Facebook SDK代码从Github添加到我的项目中。因为我使用ARC,所以我使用他们提供的shell脚本来构建静态库。我将它添加到我的项目中并确保静态库已链接,但我收到此链接器错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_FBFrictionlessRequestSettings", referenced from:
      objc-class-ref in libfacebook_ios_sdk.a(Facebook.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

以下是链接器设置:

App linker settings

有什么想法吗?

6 个答案:

答案 0 :(得分:2)

头版本有一些最近的更改,似乎已经破坏了ARC版本(静态库)。静态库构建正常,但是当在我的项目中使用时,我得到链接器错误。我解决问题的方法是恢复到以前版本的Facebook sdk,这些链接器错误消失了。

请参阅https://github.com/facebook/facebook-ios-sdk/commits/master

我使用了2月24日登记的版本(2月25日,对不起Jason Clark!)

https://github.com/facebook/facebook-ios-sdk/tree/9acf74345bb248d698966eac9a3057a4b4be1b0f

答案 1 :(得分:2)

2月25日提交的xcode项目中缺少FBFrictionlessRequestSettings.m,所以它不包含在静态链接库中,尽管标题是。

1.-克隆最新的回购,在本文发布时,最新的提交是:https://github.com/facebook/facebook-ios-sdk/commit/4e3567c40e3b7f8156a82f18e5a2f5cd18e077eb

2.-在src目录下打开xcode项目facebook-ios-sdk.xcodeproj

3.-在FBConnect下添加FBFrictionlessRequestSettings.m。

4.-使用项目导航器,make suer FBFrictionlessRequestSettings.m列在编译源下的构建阶段

5.-保存并关闭xcode项目

6.-运行scripts / build_facebook_ios_sdk_static_lib.sh来构建最新的静态链接库并按照安装说明操作,您应该能够编译和链接项目而不会出现任何问题。

更好的是,克隆这个repo并构建它。一切准备就绪https://github.com/alvarezm50/facebook-ios-sdk

答案 2 :(得分:1)

在构建你的fb-ios-sdk时看起来有点错误...所有up2date并且在构建静态lib时没有错误?

我在使用最新版本的SDK时没有任何问题。在模拟器或我的iOS5设备上运行。

这就是我所做的(OS X 10.7.3,Xcode 4.2.1,iOS5 ARC)

答案 3 :(得分:1)

我已经尝试过这个程序并且能够修复它。

选择您的项目目标 - >构建阶段 - >编译源代码 从facebook静态库中添加所有.m文件也是json静态库。 现在,如果您运行应用程序,它将不会抛出任何链接器错误。

答案 4 :(得分:0)

我有同样的问题。事实证明这是相当微不足道的。我确实使用XCode对git的支持,更喜欢使用命令行。但是,这意味着我需要确保每次从git中提取时我都会添加任何新文件并删除所有已删除的文件。在这种情况下,FBFrictionlessRequestSettings。*就可以了。

File->Add Files to "My Project"

答案 5 :(得分:0)

自2/27起,这已在主人中修复。请拉主人,这应该解决这个问题。

https://github.com/facebook/facebook-ios-sdk/commit/e10bdc15b31ab23b229f1f3e77b0e8d7affe60af

谢谢!