如何让Xcode找到文件FacebookSDK.h?

时间:2012-10-11 21:59:17

标签: xcode header-files facebook-ios-sdk

它说“未找到FacebookSDK / FacebookSDK.h文件”

然而,我可以在#import上跳转到定义并将它带到文件中。

一旦我添加#import,它现在知道FBFriendPickerDelegate是什么,现在它在该行上没有错误。

我的项目和右侧文件夹中有facebookSDK.framework。这是SDK 3.1。 我尝试将搜索路径添加到/ FacebookSDK和/FacebookSDK.framework和/ FacebookSDK / Versions / A / Headers等。我还尝试了#import“FacebookSDK.framework / Versions / A / Headers / FacebookSDK.h”,它仍然说它可以找不到它。我也试过干净并重新启动。我有最新版本的Xcode。

//
//  FacebookView.h
//

#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@interface FacebookView : UIViewController <FBFriendPickerDelegate>
{
}

16 个答案:

答案 0 :(得分:95)

首先,您必须从项目中删除您的FacebookSDK.framework。然后用这5个步骤重新开始。不要重新链接框架。

  1. 转到项目目标中的构建阶段。
  2. 在Link Binary With Libraries中,单击“+”按钮。
  3. 点击“添加其他...”按钮
  4. 浏览您的FacebookSDK文件夹。一般在〜/ Documents / FacebookSDK /
  5. Clik on(选择)“facebookSDK.framework”然后打开。
  6. 就是这样。

答案 1 :(得分:24)

无需删除任何内容。

在您的项目中,转到:&#34; 构建设置“,然后”搜索路径&#34;。寻找&#34; 框架搜索路径&#34;。你可能有这样的东西:

  

框架搜索路径:/ Users / john / Documents / exampleappxyz

将其更改为:

  

框架搜索路径: $(PROJECT_DIR)

瞧!

答案 2 :(得分:9)

我尝试了这个,但它对我不起作用。我不得不进入项目的Build Settings并手动修复FacebookSDK Framework Search Paths以找到FacebookSDK。

答案 3 :(得分:5)

好吧,伙计们,我想我得到了答案。请按照以下步骤进行操作。

  1. 将您的框架复制到您的项目中。
  2. 确保它位于某个目录下。例如$(PROJECT_DIR)/project_name/Resources/Frameworks
  3. 点击目标。
  4. 转到构建阶段→将二进制文件链接到库
  5. 点击“添加其他”
  6. 添加自定义框架
  7. 在项目导航器中验证框架只存在一次。
  8. 现在转到构建设置→搜索路径→框架搜索路径,并确保它具有以下两项内容。

    (a)$(inherited) (b)$(PROJECT_DIR)/project_name/Resources/Frameworks.

    不提醒框架存在于Frameworks文件夹

  9. 确保库搜索路径中没有任何内容。
  10. 现在点击项目(目标上方)→构建设置并重复步骤7和8.
  11. 现在清理项目并构建项目。
  12. 希望它有效。 请记住不要将任何文件夹名称保留为空格。如果你保留了它们,请确保提供正确的转义字符。

答案 4 :(得分:1)

如何删除facebook sdk链接:

对于那些喜欢自己的人来说,不正确地添加了facebook sdk。从项目中删除facebook SDK,

检查框架文件夹中的链接,删除那里的任何facebook sdk链接

进入构建阶段 - &gt; Link Binary With Libraries并删除那里的任何facebook sdk

右键单击frameworks文件夹并选择&#34;在查找器中显示&#34;并删除那里的任何facebook sdk

现在关注&#34; Fede Cugliandolo&#34;的步骤并重新添加facebook sdk

答案 5 :(得分:1)

我今天遇到了这个问题。

事实证明我需要在所有三个地方都有我的框架搜索路径:

1) Project Build Settings
2) App Target Build Settings
3) UnitTests Target Build Settings

我的搜索路径是:

/Users/myusername/Documents/FacebookSDK

确认后,错误消失了。

答案 6 :(得分:0)

我使用xcode 5,当添加sdk时,它不能正确写入“project.pbxproj”中的自写地址。

而是sdk的本地地址,它可以保存全局地址。

我打开“project.pbxproj”并找到它的位置,只为项目中的sdk留下地址。

<project name>/src/external/facebook
<project name>/src/external/testflight

编辑条目如下

/Users/<user Name>/myProjects/.../ios/<project name>/src/external/facebook

答案 7 :(得分:0)

您必须在构建设置中更改属性“框架搜索路径”,并指定文件FacebookSDK.framework所在的位置(然后您可以使用SRCROOT变量指向项目目录的根目录,因此,避免使用绝对路径;))例如:

$(SRCROOT)/SampleProject/src/Utils/Facebook/

这通常是在导入第三方框架时由Xcode自动完成的,但有时会混乱,(例如:当您修改项目目录树时......)

希望有帮助...

答案 8 :(得分:0)

除了添加搜索路径之外,我还必须设置递归路径,并从“要删除的子目录”选项中删除“* .framework”以使其生效。

答案 9 :(得分:0)

如果你已经两次导入facebookSDK并删除了一些文件,就会发生这种情况。

例如,我在$ project / framework中导入了facebookSDK,但由于某些原因我删除了它。然后我通过〜/ Documents / FacebookSDK导入它,但Xcode保留旧文件夹并默认搜索它。

我必须删除旧导入的所有引用和文件才能解决我的问题。

答案 10 :(得分:0)

我最终检查了我的项目目录,删除了对框架文件的任何旧引用。然后,从Build Phases / Search路径中删除它。同时删除链接的框架。重新启动Xcode,然后重新执行该过程:将Framework拖到Frameworks,不要复制。检查Build Phases / Search路径。包括“#import”。终于工作了。呼。

答案 11 :(得分:0)

按照说明操作 At step 4 Configure your Xcode Project 我想你错过了什么。删除项目中的Facebook.sdk,然后重试。

答案 12 :(得分:0)

当我更新XCode时遇到了同样的问题,但在我的情况下,我不想对项目设置进行任何手动更改,因为我使用CMake来创建它。你可以在这里找到我修复它的方式:https://stackoverflow.com/a/25564152/525873

答案 13 :(得分:0)

很简单,您必须从项目中删除您的FacebookSDK.framework。

转到项目目标中的构建阶段。 在Link Binary With Libraries中,单击“+”按钮。 单击“添加其他...”按钮 浏览您的FacebookSDK文件夹。 一般在〜/ mohit / Documents / FacebookSDK / Clik(选择)“facebookSDK.framework”然后打开。

现在复制此目标设置&gt;框架搜索路径到项目设置&gt;框架搜索路径。

答案 14 :(得分:0)

我找到的唯一解决方案是:

  1. 删除phonegap插件:离子插件rm phonegap-facebook-plugin

  2. 克隆下一个插件git clone:https://github.com/jeduan/cordova-plugin-facebook4.git

  3. 手动添加插件:cordova -d plugin添加PATH / cordova-plugin-facebook4 - 变量APP_ID =“*****” - 变量APP_NAME =“*****”

  4. 在此之前尝试重新添加FacebookSDK.framework并通过本地克隆安装了phonegap插件facebook,但错误仍在继续。

答案 15 :(得分:0)

请按以下步骤操作:

  1. 在项目中打开Xcode的Build Settings选项卡。
  2. 将〜/ Documents / FacebookSDK添加到项目的Framework Search Paths设置中。