从正在运行的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++ Header
和Objective-C++
源代码。
只要你使用这种文件types的分区,你应该能够自由地混合使用Objective-C和C ++ – 我通常使用这个模式来在我的iOS代码中使用C ++。