Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.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
Xcode和C++;标题 我在XCODE中使用ObjuleC++模块中的C++头文件有个问题。具体来说,为什么我可以将它们包含在源文件中而不是头文件中_C++_Ios_Objective C_Xcode - Fatal编程技术网

Xcode和C++;标题 我在XCODE中使用ObjuleC++模块中的C++头文件有个问题。具体来说,为什么我可以将它们包含在源文件中而不是头文件中

Xcode和C++;标题 我在XCODE中使用ObjuleC++模块中的C++头文件有个问题。具体来说,为什么我可以将它们包含在源文件中而不是头文件中,c++,ios,objective-c,xcode,C++,Ios,Objective C,Xcode,这里有一个具体的例子 我使用的是Xcode 7.2.1,有两个项目。第一个是C++框架,我封装到“MyFrase.Fr框架”。它公开了“myFramework.h”,这反过来又引入了“myLib.h”。在“myLib.h”的顶部是一个“#include” 第二个项目是使用上述框架的Objective-CIOS应用程序。在这个项目中,“myViewController.mm”(Objective-C++源代码)的顶部有“#import”myFramework/myFramework.h”,并引用了

这里有一个具体的例子

我使用的是Xcode 7.2.1,有两个项目。第一个是C++框架,我封装到“MyFrase.Fr框架”。它公开了“myFramework.h”,这反过来又引入了“myLib.h”。在“myLib.h”的顶部是一个“#include”

第二个项目是使用上述框架的Objective-CIOS应用程序。在这个项目中,“myViewController.mm”(Objective-C++源代码)的顶部有“#import”myFramework/myFramework.h”,并引用了该头文件中定义的内容

在这一点上,一切都很好。它构建和运行没有任何问题

当我将“#import myFramework/myFramework.h”行移动到“myViewController.h”时,编译失败,因为它找不到“”标头依赖项

<> P>无论从MyVIEW控制器.H文件类型到普通的“C标题”Objy-C++头文件,都不要紧,无论是哪种方式,XCODEL的头搜索路径都不需要标准的C++头。 所以我的主要问题是,为什么它会这样?为什么仅仅因为它在头文件中,#include/#import就被区别对待

我的第二个问题是,当#include/#import在头文件而不是源文件中时,是否有某种方法可以使Xcode处理相同的导入


谢谢!

我怀疑在其他头中包含C++头的问题是ObjuleC源文件可以看到C++头文件,这会使它被破坏。 <>如果你已经混合了C++ + ObjuleC++/ObjuleC,那么你最好只把纯ObjuleC接口暴露给项目中的其他模块,而只在ObjtoVC++源文件中包含任何C++头文件。 或者,让一切都成为客观的-C++语言,这样你就根本不需要担心它了


希望这也回答了你的第二个问题。

< P>我怀疑在其他头中包含C++头的问题是ObjuleC源文件可以看到C++头文件,它会使它被破坏。 <>如果你已经混合了C++ + ObjuleC++/ObjuleC,那么你最好只把纯ObjuleC接口暴露给项目中的其他模块,而只在ObjtoVC++源文件中包含任何C++头文件。 或者,让一切都成为客观的-C++语言,这样你就根本不需要担心它了


希望这也能回答您的第二个问题。

您确定在编译
myViewController.mm
文件时出错了吗


检查是否将
myViewController.h
导入到其他非ObjC++文件中(并且该文件是无法编译的文件)。

您确定在编译
myViewController.mm
文件时出错吗


检查是否将
myViewController.h
导入其他非ObjC++文件(并且该文件是无法编译的文件)。

应用程序项目中的所有文件都是.mm(ObjC++)所以我不确定ObjC文件是什么?包括我不知道的框架头?至于接口,我使用C++11字符串,所以我真的需要框架的使用者也使用它们。你必须发布完整的编译器错误消息才能弄清楚。你的加上Sergio的答案(见上文)让我找到罪魁祸首。目前正在执行a/facepalm…应用程序项目中的所有文件都是.mm(ObjC++)所以我不确定ObjC文件是什么?包括我不知道的框架头?至于接口,我使用C++11字符串,所以我真的需要框架的使用者也使用它们。你必须发布完整的编译器错误消息才能弄清楚。你的加上Sergio的答案(见上文)让我找到罪魁祸首。目前正在执行/facepalm…您确定在编译
.mm
文件时出错了吗?可能不是
myViewController.h
导入了其他文件(然后该文件无法编译)?顺便说一句,您是否使用
导入“myFramework/myFramework.h”不清楚“
导入
是的,就是这样。“main.m”隐藏在“支持文件”下。我习惯于它与其他所有源文件位于同一文件夹中。也许在Xcode开发过程中的某个时刻发生了变化,我不知道。但不管怎样,都很好,谢谢!我已将我的注释移动到某个答案,因此其他人更容易找到它。您确定在编译
.mm
文件时出错了吗?难道不是将
myViewController.h
导入到其他文件中(然后该文件无法编译)吗?顺便说一句,不清楚您是使用
#import“myFramework/myFramework.h”
还是
#import
是的,就是这样。“main.m”隐藏在“支持文件”下。我习惯于它与其他所有源文件位于同一文件夹中。也许在Xcode开发过程中的某个时刻发生了变化,我不知道。但不管怎样,都很好,谢谢!我已经把我的评论移到了一个答案上,所以它更容易被其他人找到。这似乎和我的答案没有什么不同。它增加了什么?我最初是作为评论写的。因为OP在他们的回答中说:“是的,就是这样。”main.m“隐藏在“支持文件”下,我想把它作为一个答案。这似乎与我的答案没有太大的不同。它补充了什么?我最初是作为一个评论写的。因为OP在他们的回答中说:“是的,就是这样。”。“main.m”隐藏在“支持文件”下,我想以此作为答案。