Xcode and C++ Headers
Xcode and C++ Headers
我有一个关于在Xcode的Objective-C++模块中使用C++头文件的问题。具体来说,为什么我可以在源文件中 #include 它们,而不是头文件?
下面是一个具体示例。
我正在使用Xcode 7.2.1,有两个项目。第一个是我打包到"myFramework.framework"中的C++框架。它公开了"myFramework.h",而"myFramework.h"又拉入了"myLib.h"。 "myLib.h"的顶部是一个"#include <字符串>"。字符串>
第二个项目是一个使用上述框架的Objective-C iOS应用程序。在这个项目中,"myViewController.mm"(Objective-C++源代码)的顶部有"#import "myFramework/myFramework.h",并引用了该头文件中定义的内容。
在这一点上,一切都很好。 它的构建和运行没有问题。
当我将"#import myFramework/myFramework.h"行移动到"myViewController.h"时,编译失败,因为它找不到"标头依赖项。
如果我将"myViewController.h"的文件类型从普通的旧"C Header"更改为Objective-C++标头,这并不重要。 无论哪种方式,Xcode 的标头搜索路径都不会查找标准的 C++ 标头。
所以我的主要问题是为什么它会这样?为什么仅仅因为 #include/#import 在头文件中就被区别对待?
我的第二个问题是,当 Xcode 在头文件中而不是源文件中时,是否有某种方法可以让 Xcode 将 #include/#import 视为相同?
多谢!
您确定在编译myViewController.mm
文件时出现错误吗?
检查myViewController.h
是否被导入到其他非 ObjC++ 文件中(并且该文件是编译失败的文件)。
我怀疑在其他标头中包含C++标头的问题在于Objective-C源文件可以看到C++头文件,这使它感到不安。
如果你混合了C++/Objective-C++/Objective-C,那么你最好只向项目中的其他模块公开一个纯的Objective-C接口,并且只在Objective-C++源文件中包含任何C++头文件。
或者,让所有内容都C++目标,然后你根本不需要担心它。
希望这也回答了你的第二个问题。
- 如何在 c++ 中理解这样的代码 [request->headers().Method()->value().getStringView())]
- 符号作为变量的值为 void:company-c-headers
- 静态断言失败,出现"Windows headers require the default packing option..."
- 将 boost/thread headers 与 clang++ (Windows) 一起使用时出现问题
- 预编译HEADERS在使用Qt Creator/qmake/MinGw的调试构建中不起作用
- Xcode and C++ Headers
- Eclipse CDT Luna untracked headers
- OpenGL 4 headers
- Emacs auto-complete-c-headers 不能使用引号
- 没有在Access-Control-Expose-Headers中获得自定义报头值
- C++编译器宏"Use Precompiled Headers"的状态
- Emacs auto-complete-c-headers.符号作为变量的值为无效
- Autoconf & C++ & Obsolete headers