github地址:https://github.com/LINGLemon/LXFSwiftApp

1.创建c++文件:Person.cpp和Person.hpp

//
//  Person.cpp
//#include "Person.hpp"
#include "PersonExtern.h"Person::Person(){age = 12;sex = true;name = "LINGLemon";
}Person::Person(const char* name , const int age , const bool sex){this->age = age;this->sex = sex;long len = strlen(name);char * cpname = new char[len + 1];strcpy(cpname, name);this->name = cpname;
}Person::~Person(){cout << "Person destruct\n";
}void Person::introduceMySelf(){cout << "Hello, I am " << name << ", my age is " << age << " years old. ";if (sex) {cout << "I am a boy.\n";} else {cout << "I am a girl.\n";}
}#pragma mark - 实现PersonExtern.h中的函数void* person_init() {return new Person();
}void person_introduceMySelf(void* person) {Person *p = (Person*)person;p->introduceMySelf();
}
//
//  Person.hpp
//#ifndef Person_hpp
#define Person_hpp#include <stdio.h>
#include <iostream>using namespace std;class Person {public:string name;int age;bool sex;public://默认构造函数,相当于initPerson();//带参数的构造函数,相当于带参数的initPerson(const char* name , const int age , const bool sex);//析构函数,用来释放资源,相当于deinit~Person();//自我介绍void introduceMySelf();};#endif /* Person_hpp */

2、创建PersonExtern.h文件(Swift能直接使用C代码但不能直接使用C++代码,所以在写好C++代码后,要使用C代码对C++代码进行封装,把C代码的函数声明暴露到PersonExtern.h文件,函数实现在cpp文件中)

//
//  PersonExtern.h
//  LXFSwiftApp
//#ifndef PersonExtern_h
#define PersonExtern_htypedef void* CPP_Person;#ifdef __cplusplus
extern "C"{
#endif/***  Swift能直接使用C代码但不能直接使用C++代码,所以在写好C++代码后,要使用C代码对C++代码进行封装*  把C代码的函数声明暴露到这个文件,函数实现在cpp文件中*/// 在这里写上C的函数声明// 初始化一个Person的实例CPP_Person person_init();// 调用Person实例的方法void person_introduceMySelf(CPP_Person person);
#ifdef __cplusplus
}
#endif#endif /* PersonExtern_h */

3、在桥接文件中,加入PersonExtern.h引用:#import "PersonExtern.h"

4、swift中调用

let person = person_init()
person_introduceMySelf(person)

终端结果:

Hello, I am LINGLemon, my age is 12 years old. I am a boy.

Swift 调用C++代码相关推荐

  1. 如何从Swift调用Objective-C代码?

    本文翻译自:How do I call Objective-C code from Swift? In Swift, how does one call Objective-C code? 在Swif ...

  2. swift项目调用OC代码,OC项目调用swift代码

    swift调用oc 在一个 Swift 开发的工程中可以通过两种方法来生成桥接文件. 第一种是,直接拖拽 OC 文件到工程中,此时系统会询问是否生成桥接文件,如图: 选择 "Create B ...

  3. Swift调用Objective C的FrameWork

    很多Github的库经过很多年的发展,源码都是OC写的,,所以,用Swift调用OC的库就是开发中难免遇到的的一个问题,本文以AFNetworking为例,讲解如何跨语言调用. 第一步 创建一个空的工 ...

  4. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  5. ruby调用java代码

    为什么80%的码农都做不了架构师?>>>    ruby使用rjb调用java代码 require 'rjb'#加载jar包 Rjb::load(classpath = '/home ...

  6. Node.js调用C#代码

    https://github.com/tjanczuk/edge 运行的时候会报 System.DllnotfoundException 无法加载node.dll,要把\packages\Edge.j ...

  7. java实时汇率的接口_eoLinker-API_Shop_汇率查询_API接口_Java调用示例代码

    eoLinker-API Shop 汇率查询 Java调用示例代码 汇率查询 提供汇率转换.单个货币对应的热门货币汇率行情,包括人民币.美元.欧元.英镑等100多种货币的实时汇率查询. 该产品拥有以下 ...

  8. 在R中调用Java代码

    我们都知道Java语言长期处于霸主地位,在所有编程语言排行榜中,Java也是常年位居第一.在近几年也是爆炸式发展,几乎覆盖到了应用开发的所有领域.而R语言则在统计圈和数据可视化处于佼佼者,如果将Jav ...

  9. Java利用JNI调用c++代码简易例子演示

    点击打开链接 (提取码:8676) 一.首先简单交代一下两个问题: 1.什么是JNI                - - -     JNI的全名为Java Native Interface(Jav ...

最新文章

  1. mysql删除有空格字符名称的触发器
  2. JavaScript 获取服务器端checkBoxlist控件选中的值
  3. 【Python】PAT-1034 有理数四则运算
  4. python项目如何打开_python如何打开_linux如何打开python_python程序打开 - 云+社区 - 腾讯云...
  5. java在线音乐播放器课程_[Java教程]15款最好的网站音乐播放器
  6. MybatisPlus实现乐观锁
  7. 某著名公司2015暑期实习招聘试题及相关内容复习
  8. Android卷一全文 第一章 阅读前的准备工作
  9. 【软件工程】IS的三级管理
  10. php银行学生助学贷款管理系统
  11. 深度学习--概率图模型(一)
  12. 诺基亚E71 专用UCWEB 6.7
  13. 揭秘月薪最容易过万的工作,男默女泪!
  14. 3D游戏建模:3dmax对场景进行布局和建模
  15. 对计算机病毒的防治也,对计算机病毒及防范对策研究.doc
  16. 奥斯汀页眉怎么设置_word页眉怎么插入及删除
  17. PDF软件推荐——Sumatra PDF - imsoft.cnblogs
  18. 梅科尔工作室--梁嘉莹-鸿蒙笔记3
  19. 网络版五子棋程序的开发
  20. 「表白神器」Python超火隐藏表白图 你能看出来吗?「附源码」

热门文章

  1. cannot open file /storage/emulated/0/DCIM/Camera/yinpin.mp4 (Permission denied)
  2. js中replace函数的使用
  3. find() 和 find_all()区别
  4. what is MacPorts?
  5. Zephyr驱动程序框架简介
  6. 晨风机器人安卓版_晨风qq机器人
  7. 开源GIS技术讨论,欢迎加群
  8. 建立时间setup time/保持时间 hold time
  9. 剪贴板查看器:CopyClip 2 for Mac
  10. Kibana可视化界面操作