Swift调用C++(图解版)
2016-10-14 本文已影响1713人
YYSky
当swift项目需要调用C++文件时,不要迷茫,看我就可以了...
1.首先新建一个swift项目.--ps:这里我就不上图了.
2.新建一个OC文件,为什么要这样呢?容我解释一下.
"Using Swift with Cocoa and Objective-C" :
You cannot import C++ code directly into Swift. Instead, create an Objective-C or C wrapper for C++ code.
文档里是说,swift中不能直接调用C++文件.而要通过OC文件这个中间层;也就是说:OC文件直接调用C++文件,swift调用OC文件.所以OC文件需要提供出API,供swift调用.
我们第一次在swift项目中,新建OC文件时,系统会自动提示新建桥接文件.
![](https://img.haomeiwen.com/i2276378/3b4f6edcb74a1009.png)
![](https://img.haomeiwen.com/i2276378/901d47f228282cb0.png)
需要注意点: OC的头文件中不要导入C++头文件,OC的.m文件如果需要用到C++文件的话,需要把OC的.m文件的后缀修改成: .mm
那个图上文件名显示挤在一起的原因是 我装了Xcode7.3.1和Xcode8,造成的.有什么大神支招能解决的??
3.新建C++文件
![](https://img.haomeiwen.com/i2276378/829c3b003407ef9e.png)
4.C++文件中新建一个类,并提供一个方法
![](https://img.haomeiwen.com/i2276378/7579937396d61cc7.png)
![](https://img.haomeiwen.com/i2276378/9da05368089a5f66.png)
5.然后在OC文件.h中提供一个接口,而.m文件中引入C++文件,并调用C++的方法
![](https://img.haomeiwen.com/i2276378/5efe7e8a07347210.png)
6.最后在桥接文件中导入OC的头文件
![](https://img.haomeiwen.com/i2276378/a8121068ad548d8e.png)
7.现在我们看看整体的目录结构
![](https://img.haomeiwen.com/i2276378/1bb80e0f5d4554aa.png)
8.我们在AppDelegate文件中测试 和 结果显示:
![](https://img.haomeiwen.com/i2276378/986a6cc82eb22212.png)
结束语:
图片应该看得挺清楚的,有问题,欢迎交流.