使用 DevEco 一键生成 ArkTS 调用 C++ 的胶水代码
为什么需要 ArkTS 调用 C++?
在一些对性能要求较高的场景下,比如:
- AI 推理等大运算处理
- 文件处理性能要求高、大文件处理、复杂文件操作
- 低延时实时通信
Native 侧比 ArkTS 有更高的效率和更快的响应速度,并且 Native 侧开发提供了更高的灵活性。而 Native 侧特指应用在设备上直接通过 C/C++ 语言编写的底层代码,这些代码可以直接访问控制设备的硬件资源,比如:CPU、内存、网络、设备外设等。
因此在这些场景下,需要 ArkTS 调用 C++ 代码,以充分发挥 Native 侧的强大性能和灵活性。
DevEco IDE 生成 ArkTS 调用 C++ 的胶水代码
ArkTS 在调用 C++ 代码时,需要生成胶水代码。DevEco IDE 提供了一键生成胶水代码的功能,帮助开发者快速生成胶水代码。
创建 Demo 工程
- 打开 DevEco IDE,选择 File > New > Create Project。
- 在弹出的新建工程界面中,选择 Native C++ 模板,点击 Next。
- 配置工程的名称(比如我的项目名
ArkTSCallCPP
、路径等信息后,点击 Finish 即可创建工程。
生成胶水代码
在 entry > src > main
路径下,可以看到已经创建了 cpp
目录,并生成了胶水代码框架文件 napi_init.cpp
和 CMakeLists.txt
,只有在 cpp 路径下存在 CMakeLists.txt
的情况下,才能进行下面步骤。
编写 C++ 代码
- 在
cpp
目录下创建MyTime.h
,分别编写 C++ 代码,如我创建了 MyTime class 并声明了 now() 方法:
#ifndef ARKTSCALLCPP_MYTIME_H
#define ARKTSCALLCPP_MYTIME_H
#include <string>
#include <ctime>
using namespace std;
class MyTime {
public:
explicit MyTime(){
};
virtual ~MyTime(){
};
string now() {
time(&this->nowTime);
return string(ctime(&this->nowTime))