我有一个关于在Xcode中使用Objective-C++模块中的C++头文件的问题。具体来说,为什么我可以在源文件中包含它们,但不包含头文件?Xcode和C++头文件
这里是一个具体的例子。
我使用Xcode 7.2.1并有两个项目。第一个是我打包到“myFramework.framework”中的C++框架。它暴露了“myFramework.h”,它反过来引入“myLib.h”。在“myLib.h”的顶部是“#include <string>”。
第二个项目是一个Objective-C iOS应用程序,它使用上述框架。在这个项目中,“myViewController.mm”(Objective-C++源代码)在顶部有“#import”myFramework/myFramework.h“,并引用该头文件中定义的东西。
此时一切都很好和不错的。它建立和没有问题的运行。
当我移动“#进口myFramework/myFramework.h”行“myViewController.h”,编译,因为它不能找到“”头依赖失败。
如果将“myViewController.h”的文件类型从普通的“C Header”更改为Objective-C++头文件无关紧要,无论哪种方式,Xcode的头文件搜索路径都不寻找标准的C++头文件
所以我的主要问题是为什么这样表现?为什么仅仅因为它在一个头文件中而被处理#include /#import?
我的第二个问题是,如果有一些方法可以使Xcode处理#include /#在导入到头文件而不是源文件时相同吗?
非常感谢!
你确定在编译'.mm'文件时出现错误吗?是不是'myViewController.h'导入到其他文件(然后该文件无法编译)?顺便说一下,不清楚你是否使用'#import“myFramework/myFramework.h”'或'#import' –
sergio
是的,就是这样。 “main.m”隐藏在“支持文件”下。我习惯了它与所有其他来源位于同一个文件夹中。也许这在Xcode的开发过程中发生了某些变化,我不知道。但无论如何 - 都很好,谢谢! – Bungles
我已将我的评论移至答案,因此其他人更容易找到答案。 – sergio