最近在做一个需求,需要把c++写好的方法封装成面向对象的形式,方便解读和调用,但是由于之前没有接触过这方面,所以对于如何引入和调用不知道怎么处理,多方查找信息,网上说的模棱两个,最后终于搞定了,所以这里分享出来给需要的小伙伴。

首先引入就是把cpp文件add到项目里,通过#include “”来引入头文件,先别急,这里还要说另外一个东西,因为引入cpp文件不能直接调用里面的方法,所以这里要说一个新的东西hpp文件,如果你要自己写c++的文件,你可以在Xcode中创建一组c++文件:

iOS开发 -- 在Xcode中引入cpp文件,并调用cpp文件中的方法_字符串

Next后:

iOS开发 -- 在Xcode中引入cpp文件,并调用cpp文件中的方法_c++_02

一定要勾选Also create a header file,这个header file就是我们要用来转化的hpp文件,把cpp中的方法名声明在hpp文件,在oc类中include倒入hpp文件,就可以直接调用cpp中的方法了,如果已经有了cpp,那就创建一个hpp文件,参考上面创建c++文件的步骤删除新创建的不用的cpp文件,更改hpp文件名字和自己的cpp文件名一致。

声明举例:

cpp文件
void myMethod(char *path) {

}

hpp文件
void myMethod(char *path);


oc中调用
myMethod("Hello World");//这个调用c++方法的类.m文件要改成.mm
//ps:关于里面的类型需要格外注意,往往是char和字符串的转换,字符串转char类型:
- (char *)stringToChar:(NSString *)string
{
char* TermConfig = (char*) [string UTF8String];
return TermConfig;
}

另外建议在hpp文件中加上using namespace std;
这是因为在使用c++中的string时,会和iOS中的string类型不匹配,这个可以进行一个转换。

以上,欢迎提问。