美文网首页iOS我爱编程
iOS开发之漫谈OC、C、C++混编

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

作者: KODIE | 来源:发表于2017-09-07 09:41 被阅读0次

    导读

    混编ObjectiveC++

    正题

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

    首先说一下C++文件:
    Snip20170907_151.png

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

    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++混编

        本文链接:https://www.haomeiwen.com/subject/rgwbjxtx.html