最近在做一个需求,需要把c++写好的方法封装成面向对象的形式,方便解读和调用,但是由于之前没有接触过这方面,所以对于如何引入和调用不知道怎么处理,多方查找信息,网上说的模棱两个,最后终于搞定了,所以这里分享出来给需要的小伙伴。
首先引入就是把cpp文件add到项目里,通过#include “”来引入头文件,先别急,这里还要说另外一个东西,因为引入cpp文件不能直接调用里面的方法,所以这里要说一个新的东西hpp文件,如果你要自己写c++的文件,你可以在Xcode中创建一组c++文件:
Next后:
一定要勾选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类型不匹配,这个可以进行一个转换。
以上,欢迎提问。