iOS开发-OC、C、C++ 混编
OC里面的有三大类文件.m/.h(OC),.c/.h (C),.cpp/.hpp(C++)。 一、在OC中调用C或者C++ 如果是.m文件,可以用OC和C的代码; 如果是.mm文件,可以用OC和C和C++的代码; .m 和.mm 的区别是告诉编译器在编译时要加的一些参数。.mm也可以命名成.m,手动加编译参数。 二、在C++中调用OC PIMPL (Private Implementation, 私有实现) 不要在C++中依赖ARC,最好自己手动管理。 遇到的问题: 1,尝试在同一个文件中调用oc、c、c++,ld: symbol(s) not found for architecture x86_64。 问题出现的原因和OC无关,在c++中引用c的头文件,需要用extern "C"{}把代码包括起来。详细原因见下: http://stackoverflow.com/questions/9334650/linker-error-calling-c-function-from-objective-c 2,在c++中调用OC时遇到了问题,在.cpp文件中调用OC的类,在Foundation处报错。 问题出现在.cpp文件用的是纯粹的c++编译。 解决方案:把实现放在.mm。 learnCplus(1, 2); //在OC中使用c learnCplusplus(1, 2); /