【问题标题】:Xcode can't find header fileXcode找不到头文件
【发布时间】:2016-02-14 23:21:54
【问题描述】:

我正在尝试为我的项目创建一个框架。在我的框架中,我将头文件的路径添加到 target>Build Settings>header-search path。之后,我通过Build Phases>Link Binary With Libraries将此框架添加到我的项目中。

当我想导入包含在我的框架中的头文件时,我得到一个 .h file not found 错误。我正在尝试做的事情可能吗?还是我错过了什么?

我创建了这样的框架;

Opened new project as iOS>Framework&Library>Cocoa Touch Framework 我没有添加任何类,我只是添加了标题搜索路径和库搜索路径以及链接器标志。我不认为我在这部分做错了,因为我们在每个项目中都这样做,但我第一次这样做是为了框架。然后我按下运行并从 Products 中获取我的框架。

我打开了我的项目并添加了框架构建阶段>将二进制文件与库链接。我可以导入框架的头文件,如#import <myframework/framework.h> 在此之后,我还添加了框架 General>Embedded Binaries。一切看起来都很正常,但我无法将标题添加到我的项目中,我通过标题搜索路径将其包含到我的框架中。我必须使用标题搜索路径,因为有大量标题,我无法将它们全部添加到我的 Xcode 中。

【问题讨论】:

  • 如果标题在框架内,您不需要设置标题搜索路径,是吗?但是,您必须在 #import 语句中正确命名标题(#import <Framework/Framework.h>)。
  • 另一个路径有很多标题。不幸的是,我必须使用标题搜索路径。一种公司规则。感谢您的评论。
  • 您能否更详细地描述一下您是如何创建框架以及如何导入它的?
  • @arturdev 当然,我做到了。请再读一遍。希望有足够的细节。

标签: ios objective-c xcode frameworks


【解决方案1】:

确保所有公共标题都出现在公共部分中,否则将 .h 文件拖放到公共

【讨论】:

  • Xcode 上没有任何头文件,它们位于不同的文件夹中,我仅从头搜索路径中显示它们的路径。头文件很多,我无法将它们全部拖放到 Xcode 中。
  • 你必须将所有头文件拖到框架项目的公共部分,然后你只需要包含你的框架
  • 嘘!很简单!谢谢!
【解决方案2】:

一切看起来都很正常,但我无法将标题添加到我的项目中,这些标题包含在带有标题搜索路径的框架中。

听起来好像您希望在您的标头搜索路径指定的路径中找到的所有标头都将成为您框架的一部分,因此如果您的搜索路径中有一个名为 SomeHeader.h 的标头,它将内置到您的框架中,您将能够将其导入到客户端项目中,例如:

#import <MyFramework/SomeHeader.h>

但事实并非如此。如果您希望您的框架提供SomeHeader.h,您需要将该文件添加到项目中,并且正如 Meghs Dhameliya 已经指出的那样,您需要在 Headers 构建阶段的 Public Headers 部分中指定 SomeHeader.h。这将使 Xcode 将头文件复制到框架中,以便框架的客户端可以导入头文件。尚不清楚这是否是您真正想要的,但是...在您写的 cmets 中:

另一个路径中有很多标题。不幸的是,我必须使用标题搜索路径。一种公司规则。

所以听起来您公司中的所有项目都指定了相同的头文件搜索路径,以便他们可以访问这些头文件。如果这是真的,那么项目没有理由需要从您的框架中 #import 它们,但在这种情况下,不清楚实际问题是什么。或者,也许您正在创建框架,以便客户端项目可以从您的框架中获取标头,而不必引用标头搜索路径。在这种情况下,您需要将这些标头添加到项目中并按上述说明指定它们。

【讨论】:

  • Caleb,是的,我们有很多头文件和库,当我们与客户共享它们时,他们会混淆并且通常忘记添加头文件搜索路径或链接器标志。所以我想创建一个包含所有这些的框架,并且只与客户共享框架。我正在尝试学习是否可能。再次是的,我们所有的标题都在相同的指定路径中。我们必须从那里将它们与标题搜索路径一起使用。最后,我从标题搜索路径中得到了它。
  • @yucelbayram 如果你只需要#import这些头文件到你的源文件中,你可以使用头文件搜索路径,这样编译器就有了所有的定义等等。需要编译。由于您希望将头文件本身实际包含在您的框架中,以便它可用于#import 的客户端项目,是的,您需要添加到项目中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2014-11-24
  • 2013-01-28
相关资源
最近更新 更多