由于公司的项目需要跨平台编译,所以免不了入了混编的坑,现归纳如下,希望可以给踩坑的后人留下一点福利吧。
1、苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。
2、在.mm文件对应的.h文件中,引用c++的类或者头文件,就会报找不到string.h等C++类库之类的错误:
需要在包含关于c++部分的头尾写上#ifdef __cplusplus,#endif,告诉编译器这部分是用C++预编译的。
3、枚举类型错误的问题:
文件改成.mm之后,枚举类型的累加就会报类型不匹配的错误。
这时,我们只需要用static_cast < type-id > ( expression ),进行类型的转换。
4、持续更新中。。。。