首先是OC调用C++的代码。
创建一个Objective-C的项目,并创建c++文件MyCppFile.hpp和MyCppFile.cpp。
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC8xQkEzQUQ5OC1GMjFBLTQyNEEtOTNCQS04MTk4OTBDQ0U3NzgucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NjQyOTkxLTE5OTgzMDQzMjQucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC9DOUU5NUMxMS0wRjg1LTQ1NDYtODcxQi0zMDg2M0E5QkU3MzYucG5n.png?w=700&webp=1)
把要调用Cpp代码的文件名改成mm后缀名,项目代码的结构如下:
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC83QTA1OTU0Qi0wQzM4LTREMDEtQkNGQS1GMTAwMTBFMjkyNkIucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzA2NTM4LTE1MTcxNzA0OC5wbmc%3D.png?w=700&webp=1)
实现C++部分的代码:
MyCppFile.hpp
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC84RDBBMTc3OS0wOTc2LTRBQzAtOTk5Mi01MEJBOTM4MzMzNUQucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzIwMzgyLTE4NDkyMTMwODcucG5n.png?w=700&webp=1)
MyCppFile.cpp
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC8zMTBGNzg1Qy03ODYzLTQ4MzUtOEJDNS1BNDkzQTA1OTI4RjUucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzI3MDg1LTkxNTM3NTUzOC5wbmc%3D.png?w=700&webp=1)
在main.mm里引入C++的头文件就可以调用了:
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC80MTU0Q0U3Mi1DMzc2LTREQzYtOEIyNC00M0MyNzc1NDJBQTgucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzM5MjcyLTc0NjExNTcwNy5wbmc%3D.png?w=700&webp=1)
然后是C++调用OC
先创建OC相关的文件,然后把*.m修改为*.mm。
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC9JbWFnZSgyKS5wbmc%3D.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzUwMjcyLTc4Mzc0OTY1My5wbmc%3D.png?w=700&webp=1)
头文件用C的格式来进行编写
MyOCFile.h
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1ODExNjQ3LTE5OTQzMDk2NTMucG5n.png?w=700&webp=1)
用OC编写具体的实现。
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC9CQUY1MDk2OS0xMDNBLTQ0QTYtOUE5RC1GNUNDMjQxQ0Q4QzgucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1NzU3ODM1LTIxMDU4OTM1OTUucG5n.png?w=700&webp=1)
同样,在C++里引入头文件即可调用。
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS9Vc2Vycy9sYXJsZi9BcHBEYXRhL0xvY2FsL1RlbXAvZW5odG1sY2xpcC84QTQwMDI3OS1BMEIwLTQxODctQTdGQi01MDJCNUVERjg3RjIucG5n.png?w=700&webp=1)
![苹果系统开发中的混合编程(1):Objective-C和C++的相互调用 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlczIwMTUuY25ibG9ncy5jb20vYmxvZy8xMDEzNTg5LzIwMTYwOC8xMDEzNTg5LTIwMTYwODI2MTU1ODM0NzQxLTE0NDI2MjYwNi5wbmc%3D.png?w=700&webp=1)
OC和C++间的调用比想象中的要简单,这里的关键是要把OC的文件的扩展名修改为*.mm。