Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 框架头在Xcode中找不到自己的头文件?_Objective C_Xcode_Macos_Frameworks_Taglib - Fatal编程技术网

Objective c 框架头在Xcode中找不到自己的头文件?

Objective c 框架头在Xcode中找不到自己的头文件?,objective-c,xcode,macos,frameworks,taglib,Objective C,Xcode,Macos,Frameworks,Taglib,在Xcode中,假设有一个名为Foo的框架。在Foo.framework/Headers文件夹中有文件File1.h和File2.h。头文件File1.h通过以下指令包括File2.h: #include <File2.h> #import <Foo/File1.h> 现在,当我试图编译MyFile.mm时,它总是失败,因为它找不到File2.h。我如何在不修改Foo框架的头文件的情况下编译和运行它 好奇的是,所讨论的实际框架是从源代码树中获取的框架打包版本。我试图包

在Xcode中,假设有一个名为
Foo
的框架。在
Foo.framework/Headers
文件夹中有文件
File1.h
File2.h
。头文件
File1.h
通过以下指令包括
File2.h

#include <File2.h>
#import <Foo/File1.h>
现在,当我试图编译
MyFile.mm
时,它总是失败,因为它找不到
File2.h
。我如何在不修改
Foo
框架的头文件的情况下编译和运行它

好奇的是,所讨论的实际框架是从源代码树中获取的框架打包版本。我试图包含的文件是
,编译包含它的
.mm
文件总是失败,因为
mp4tag.h
包含
,但在include指令中没有
前缀。错误不仅存在于这一个头文件中,而且在大量头文件中也存在类似的问题,因此修改所有这些include语句是非常重要的。所有必需的“缺失”头文件实际上都存在于框架的
子目录中

我正在尝试在我的应用程序中使用Taglib,尽管我能够将Taglib编译为带有头文件的框架并将其添加到我的应用程序中,但由于上述问题,我似乎无法让应用程序编译

有人有什么建议吗


谢谢。

我认为
File1.h
应该说:

#include "File2.h"

尝试检查Xcode中的“始终搜索用户路径”选项。

以下是修复该选项的步骤:

  • 将File1.h中的代码改为使用“#include”
  • 在框架项目/默认目标/构建阶段,设置“复制文件”阶段并添加File1.h和File2.h
  • 确保“复制文件”阶段在“编译”阶段之前

  • 这应该可以解决问题,因为框架将以与使用框架的代码完全相同的方式引用文件。

    我觉得框架有一个bug-它应该使用与预期框架用户使用的
    #import
    语句相同的前缀。此框架不是Mac OS X特定的,它们是C/C++源代码(框架中没有Objective-C源代码)。选中“始终搜索用户路径”(这是默认选项)。File1.h是开源库的一部分,它不仅仅是一个文件(也就是说,库中有许多头文件以相同的方式包含其他头文件)。好的,现在我确定框架设置不正确。如果无法修复,则需要将标题搜索路径添加到框架的Headers文件夹。我如何判断框架是否正确设置?我的意思是,如果它将自己的标题作为系统标题(在尖括号中)包含,则不正确。