【问题标题】:Xcode 7 can't find header files from frameworkXcode 7 无法从框架中找到头文件
【发布时间】:2015-08-26 01:38:37
【问题描述】:

我正在尝试将 PassSlot 添加到我的项目中,但它说找不到 .h 文件。我从这里正确地关注了一切:https://github.com/passslot/passslot-ios-sdk

这是 Xcode 7 的问题吗?它工作正常,现在我在 Xcode 7 中打开了项目,它给了我这个问题。我在 Xcode 6 上重新打开它,它也开始显示问题。

【问题讨论】:

  • 发生了什么?您是否尝试导入标头但没有找到它?请提供有关您所做工作的更多详细信息。您是否为文件设置了目标成员?
  • 是的,我正在尝试导入标头,但它说找不到。我已经尝试清理/构建,为文件设置目标成员资格,并更改位置(从相对于组到相对于项目)。
  • 您需要发布一些屏幕截图。某处缺少某些东西,我无法从您非常有限的细节中看出。在您的项目设置中的某个地方有些东西被弄脏了。
  • 我注意到,当您导入第 3 方时,Xcode7 不会自动填写所需的框架搜索路径(我相信 Xcode6 确实这样做了)。通过转到项目 -> 构建设置 -> 搜索路径 -> 框架搜索路径来检查您的是否为空。用你的框架所在的地方填写它。如果它在您的项目下,您可以使用$(PROJECT_DIR)
  • 我遇到了这个问题,这是由于我的项目文件夹中有空格。如果您有空格,则路径会在框架路径设置中拆分。如果是这种情况,请在路径名周围使用双引号。

标签: ios xcode passslot


【解决方案1】:

我认为迪西是对的。这为我解决了这个问题。

我注意到 Xcode7 不会自动填写所需的 导入第 3 方时的框架搜索路径(我相信 Xcode6 确实这样做了)。转到 Project -> 检查您的是否为空 构建设置 -> 搜索路径 -> 框架搜索路径。填入 与您的框架所在的任何地方。如果它在您的项目下,您可以 使用 $(PROJECT_DIR)

【讨论】:

  • 如果你有这个问题,你可能还需要这个后续问题:stackoverflow.com/questions/30848208/new-warnings-in-ios9
  • 此解决方案适用于 xcode7。我认为xcode的问题是因为我没有拖放框架并放入自定义路径并通过PhaseBuild>LinkBinaryWithLibraries>add添加它
【解决方案2】:

#import <Framework/Headerfile.h> 替换#import "Headerfile.h" 对我有用。

【讨论】:

  • 确保此导入语法后,我无法编译模块“Frameworkname”。这是因为聚合标头包含附加标头。如果是这种情况,您必须转到框架项目的构建阶段并确保“Headers”将有问题的 .h 文件设置为 public
【解决方案3】:

当您将所需的框架拖放到您的框架文件夹时,勾选“目标:如果需要,复制项目”

那么你现在就可以正确引用它了。

Screenshot

【讨论】:

    【解决方案4】:

    刚刚使用 Xcode 7 遇到了这个问题,我最终不得不将第 3 方框架(和包)文件复制到我的项目的主目录中,然后再将其拖到 Xcode 项目中。这使它能够添加正确的框架搜索路径,不再给我带来任何问题。

    【讨论】:

      【解决方案5】:

      在 Objective-C 中创建一个新的测试目标后,我自己就遇到了这个问题。

      要记住的一点是,在某些情况下,每个测试目标都必须列在 Podfilepod 依赖项中。如果Podfile只关联项目和pods,可能找不到pod头文件。

      这是来自the cocoapods docs 的更复杂的Podfile 示例。

      target 'MyApp' do
        pod 'ObjectiveSugar', '~> 0.5'
      
        target "MyAppTests" do
          inherit! :search_paths
          pod 'OCMock', '~> 2.0.1'
        end
      end
      
      post_install do |installer|
        installer.pods_project.targets.each do |target|
          puts "#{target.name}"
        end
      end
      

      【讨论】:

      • 通过添加inherit和puts,我无法查看框架头文件。
      【解决方案6】:

      我在尝试链接到我自己的自定义框架时遇到了这个错误。问题是我没有设置我的框架来导出所需的标题。这样做:

      1. 选择您想要提供的每个头文件,转到文件检查器 > 目标成员,并确保目标已选中并设置为“公共”。
      2. 在 MyFrameworkName.h 顶级文件中,导入您希望使其可用的每个头文件:例如#import <MyFrameworkName/MyPublicHeader.h>

      【讨论】:

        【解决方案7】:

        在我的例子中,使用 CocoaPods,Xcode 构建良好,但命令行构建找不到框架头文件。

        解决方案是构建工作区,而不是项目!

        【讨论】:

          【解决方案8】:

          清理项目并重新启动 XCode 有时会有所帮助

          【讨论】:

            猜你喜欢
            • 2017-02-25
            • 1970-01-01
            • 1970-01-01
            • 2011-03-08
            • 2016-05-18
            • 2012-09-20
            • 1970-01-01
            • 2014-07-16
            • 1970-01-01
            相关资源
            最近更新 更多