Vin*_*ius 6 c++ iphone xcode compilation
我有一个我想在iPhone/iPad项目中使用的C++类.
我以不同的方式创建了这个文件(比如"New File"=> C++),错误总是一样的.
当我编译项目而没有任何#import(.h C++类)时,没关系.
但是只要我在我的一个标题objective-c文件中#import头文件,我就会得到如下错误:
错误:vector:没有这样的文件或目录
要么
错误:在':'标记之前预期'=',',',';','asm'或' attribute '
我尝试在文件信息中为文件类型(C++类)设置不同的值,在.mm等中重命名我的objc类,但它似乎不起作用.
所以我一定错过了在objc头文件中导入.h c ++类的内容,但是:p ^^
解决方案感谢Vlad
1°)要包含标题c ++文件:
#ifdef __cplusplus
#include "Triangulate.h"
#endif
Run Code Online (Sandbox Code Playgroud)
2°)将.mm中的objc文件和其文件信息(右侧clic)设置文件类型重命名为sourcecode.cpp.objcpp
谢谢你的帮助!
文森特
小智 7
注意:Xcode要求文件名具有".mm"扩展名,以便编译器启用Objective-C++扩展.
尝试在驻留在具有.m扩展名的文件中的Objective-C代码中使用C++ 是问题的最可能原因,因为编译器根据错误消息不能识别C++构造.重命名您的.m文件.mm应该有所帮助.
有关更多详细信息,请参阅将Objective与C一起使用C++.
假设您想在Objective-C++源文件中使用Objective-C类,那就完全没问题了.唯一的限制是您的.h文件必须是Objective-C clean.这意味着您不能在其中使用任何C++ - isms,或者如果您这样做,则必须将它们全部包装在#ifdef __cplusplus中.当标题#included由一个普通的Objective-C文件包含时,标题将以ObjC模式编译,因此它必须消除该情况下的任何C++主义(1).所以你的Objective-C头文件应该包含这样的C++头:
#ifdef __cplusplus
# include MyCPPHeader.h
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8349 次 |
| 最近记录: |