iOS开发之漫谈OC、C、C++混编

导读

混编ObjectiveC++

正题

今天主要讲一下OC与C和C++混编的问题

首先说一下C++文件:
iOS开发之漫谈OC、C、C++混编_第1张图片
Snip20170907_151.png

单独把C++文件导入到文件中只要语法没有错误,是能够正常编译的,但是如果你要调用这个C++文件的函数或者对象的方法就会报错,报如下错误:

iOS开发之漫谈OC、C、C++混编_第2张图片
Snip20170907_149.png

这个错误很经典,解决办法就是在调用C++函数或者对象方法的所在OC文件(.m)将后缀.m改成.mm即可。

其次说一下C文件

如果我们在同一个.m文件中调用了调用了C++又调用了C函数,那么这也会报上述的错误,那么该如何解决呢?
解决办法:
先将此文件改成.mm,然后创建一个继承自NSObject的类文件,在此类文件中调用C语言函数,然后再在需要.mm文件中所需调用C的位置再调用继承自NSObject的类方法或者对象方法即可。

总结

  • 在 OC 中调用 C++ 代码时,需要将 OC 代码所在的 .m 文件后缀名修改为 .mm。
  • 在 OC 的 .mm 文件中调用 C 代码,需要将 C 代码所在的文件后缀名(通常为 .c)修改为 .mm,或者建一个中间的OC类调用C代码即可。
  • 有时候可能需要在 Build Settings -> Other Link Flags 添加 -lstdc++。
  • 甚至可能需要导入C++系统库libstdc++.tbd

以上!!!

弹钢琴.gif

你可能感兴趣的:(iOS开发之漫谈OC、C、C++混编)