在xcode/objective c中使用c++
using c++ in xcode / objective c
所以我试图在我的ios项目中使用C++。
在我创建了一个新项目(所有默认设置,xcode的新安装)后,我创建了Question.h
和Question.mm
文件,如下所示:
Question.h
#include <iostream>
#include <string>
using std::string;
class Question {
public:
string text;
};
Question.mm
#include "Question.h"
它尖叫着出现错误,比如:Iostream: No such file or directory
使用Xcode 3.2.6与iOS SDK 4.3
我做错了什么?
最有可能的原因是您将Question.h
包含在非C++文件中,例如,您的AppDelegate可能是一个.m文件,并且您正试图在其中包含Question.h
。
有两种解决方案。首先,你可以将所有东西都设置为Objective-C++(将所有.m文件重命名为.mm)。从历史上看,我发现这非常不方便,因为Xcode和gdb在使用ObjC++时总是遇到很多麻烦,你可能会遇到很多困惑(gdb中可怕的"没有这个指针"answers"堆栈框架的未知语言"错误)。我还没有对最新版本的Xcode和gdb做足够的工作来确定这是否仍然是一个问题,但我怀疑这是因为gdb还没有做很多工作。此外,ObjC++的编译速度较慢。
另一种选择是将C++封装到ObjC中,这样您就可以将其自由地包含到代码的纯ObjC部分中。这是我通常采取的方法。ObjC++是一种有点混乱的IMO语言,我认为最好保持ObjC(.m)和C++(.cpp)的纯粹性,并用一层薄薄的ObjC++(.mm)将它们粘合在一起。
确保主.m文件没有导入AppDelegate文件。它可能是这样使用的:
NSStringFromClass([AppDelegate class])
但你可以这样做:
@"AppDelegate"
这解决了我的问题。
尝试将Question.mm
重命名为Question.cpp
,因为xcode根据扩展决定使用哪个编译器。
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- Xcode 语义问题引用或以前定义的代码
- 使用 Xcode 将双精度存储在数组C++中
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 各种版本的 Mac OSX 向后兼容性如何?(Xcode C++
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- macOS 是内置在 clang 编译器中还是内置于 xcode ide 中?
- Qt - 从XCode上传到MacOS AppStore
- 在 xcode 10 上找不到 stdlibc++ 标头错误
- cmake add_custom_command + Xcode:多输出 = 多命令调用
- 在 xcode 上使用 stdlib.h
- 我可以在没有Xcode的情况下在Mac上使用带有C++的虚幻引擎吗?
- 为什么不支持 Xcode 1.5?
- C++ Xcode 9 - 无法从 Cimg 调用函数 display()
- Xcode 中的加速框架以获得 A 的 QR 分解,但找不到 zgeqrf
- 如何将 PhysX 库与 Xcode 链接
- Xcode Test Navigator 如何在纯C++项目中显示 Google 测试
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- Xcode 添加新库