框架头在Xcode中找不到它自己的头文件?
问题描述:
在Xcode中,假设有一个名为Foo
的框架。在Foo.framework/Headers
文件夹内有文件File1.h
和File2.h
。头文件File1.h
通过以下指令包括File2.h
:框架头在Xcode中找不到它自己的头文件?
#include <File2.h>
的Foo
框架++库不专门针对Mac的一个C的重新包装。
现在假设我有一个链接到Foo
框架的项目。它有一个文件MyFile.mm
,包括通过以下指令File1.h
:
#import <Foo/File1.h>
现在,当我试图编译MyFile.mm
,它总是因为找不到File2.h
失败。如何在不修改Foo
框架的头文件的情况下编译并运行它?
为了好奇,所讨论的实际框架是取自Max源树的Taglib的框架打包版本。我试图包括的文件是<taglib/mp4.tag>
和编译.mm
文件,其中包括它总是失败,因为mp4tag.h
包括<tag.h>
没有在include指令中的<taglib/...>
前缀。错误不仅出现在这一个头文件中,而且在大量头文件中也存在类似的问题,因此修改所有这些包含语句都不是微不足道的。所有需要的“缺失”头文件实际上存在于框架的Header
子目录中。
我想在我的应用程序中使用Taglib,虽然我能够将Taglib作为一个带有头文件的框架进行编译并将其添加到我的应用程序中,但由于问题,我似乎无法获得应用程序编译以上。
有人有指针吗?
谢谢。
答
我认为File1.h
应该说:
#include "File2.h"
尝试检查在Xcode “始终搜索用户路径” 选项。
答
下面是解决它的步骤:使用“的#include”
- 更改代码在File1.h。
- 在框架项目/默认目标/构建阶段中,设置“复制文件”阶段并添加File1.h和File2.h。
- 确保“复制文件”阶段在“编译”阶段之前。
这应该解决这个问题,因为框架将使用与使用框架的代码完全相同的方式引用文件。
听起来我觉得这个框架存在一个bug - 它应该为它的'#import'语句使用相同的前缀,它期望框架的用户使用它。 – 2010-06-26 16:24:45
这个框架不是特定于Mac OS X的,它们是C/C++源代码(框架中没有Objective-C源代码)。 – adib 2010-06-27 16:59:20