从正在运行的iOS项目导入.CPP文件并重命名为.mm问题

我已经从一个工作项目复制一个.CPP和它的.h文件到一个新的。

我将.CPP的结尾重新命名为.mm,但它仍然给我错误。

在.h文件中,在类定义class MeterTable附近,它表示期望;

在.mm文件中,有各种错误。

我想通过改变实现文件的结尾.mm它会清除所有这些错误。 是的,在旧项目下编译的原始.CPP文件。

看起来像是将.h文件包含到其他.m文件中。 你不能只将C ++头文件包含到C或Objective-C源文件中。 你需要确保你的C ++接口是C兼容的(没有类,只有没有重载的自由函数)。 或者你将不得不将项目中的所有.m文件更改为.mm

唯一的解决scheme是有一个内联头文件。

.h文件更改为.hpp并将.cpp文件与.h文件组合在一起。

作为例子; 你的.h文件:

 // class.h class { public: void someclass(int a); }; 

和你的.cpp文件:

 // class.cpp #include "class.h" void someclass(int a) { return; } 

像这样合并到.hpp中

 // class.hpp class { public: void someclass(int a) { return; } }; 

Objective-C和C ++可以一起玩,但是有一些警告。 首先,任何引用C ++代码(即通过头文件)的.m文件都必须定义为Objective-C ++源代码, 而不是 Objective-C。 这可以通过转到文件检查器的.m文件并将文件types从Objective-C Source更改为Objective-C++源来逐案完成。 其次,使用相同的方法将.h.cpp (或.mm ,实际的扩展名无关紧要,它是定义的types)分别定义为C++ HeaderObjective-C++源代码。

只要你使用这种文件types的分区,你应该能够自由地混合使用Objective-C和C ++ – 我通常使用这个模式来在我的iOS代码中使用C ++。