如何使用DevEco Studio创建Native C++应用

简介

本篇主要介绍如何使用DevEco Studio for OpenAtom OpenHarmony (以下简称“OpenHarmony”)创建一个Native C++应用。应用采用“Native C++”模板,实现了通过Node-API调用C标准库的功能。本示例通过调用C标准库接口来演示调用过程,具体接口是C标准库的计算两个给定数和,并将结果返回到页面展示。通过这个应用我们可以掌握OpenHarmony系统的ArkTS/JS与C/C++混合开发。ArkTS/JS与C/C++ 混合开发是OpenHarmony系统中的一套原生模块扩展开发框架,它基于Node.js N-API规范开发,为开发者提供了ArkTS/JS与C/C++模块之间相互调用的交互能力。这套机制对于OpenHarmony系统开发的价值有两方面:

1、OpenHarmony系统可以将框架层丰富的模块功能通过js接口开放给上层应用使用。

2、应用开发者也可以选择将一些对性能、底层系统调用有要求的核心功能用C/C++封装实现,再通过js接口使用,提高应用本身的执行效率。

效果图

实现效果如下图所示:

通过ArkTS编写界面,根据界面展示点击输入框输入两个数,再点击计算按钮调用接口,将数据传入到C++端,C++端计算后再作为返回值到ArkTS端。

环境搭建

我们首先要完成应用开发环境的搭建,本示例运行RK3568开发板上。

1、 搭建应用开发环境

1.1、开始前请参考应用开发快速上手链接,完成DevEco Studio的安装和开发环境配置:参考链接

1.2、开发环境配置完成后,创建工程(模板选择“Native C++”),选择JS或者eTS语言开发。

2、应用调测

工程创建完成后,选择使用真机进行调测。

2.1、将搭载OpenHarmony标准系统的开发板与电脑连接。

2.2、点击File> Project Structure… > Project>SigningConfigs界面勾选“Automatically generate signature”,等待自动签名完成即可,最后点击“OK”。如下图所示:

”按钮运行。

源码结构

代码结构分析,整个工程的代码结构如下:

文件说明如下:


                
### 如何在 DevEco Studio 中配置 C++ 开发环境或添加 C++ 文件支持 #### 配置开发环境 为了在 DevEco Studio 中启用 C++ 支持并成功构建 Native 应用程序,需要完成以下设置: 1. **安装必要的工具链和 SDK** 使用 DevEco Studio 的配置向导可以自动下载最新的 HarmonyOS SDK 和工具链。如果需要特定版本的 API(如 API Version 4 至 8),可以通过手动方式下载这些资源[^3]。 - 在欢迎页中点击 `Configure > Settings` (macOS 用户为 `Preferences`)。 - 转到 `SDK > HarmonyOS` 页面。 - 手动勾选所需的 API 版本并下载对应的 SDK 及工具链。 2. **创建新项目时选择 Native C++ 类型** 当新建一个项目时,在模板选项中可以选择支持 Native C++应用程序类型。这一步骤会自动生成基础目录结构以及必要的配置文件,例如 `CMakeLists.txt` 和 `.cpp` 文件[^1]。 #### 添加 C++ 文件支持 对于已经存在的项目或者希望扩展现有项目的功能来说,以下是具体操作指南: 1. **修改 build.gradle 文件** 确保模块级别的 `build.gradle` 文件中有如下内容来声明对外部原生库的支持: ```gradle android { ... defaultConfig { externalNativeBuild { cmake { cppFlags "-std=c++17" } } } externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" version "3.10.2" } } } ``` 2. **编辑 CMakeLists.txt** 这个文件定义了编译器应该如何处理您的 C++ 源码。通常情况下它会被放置于 `cpp/` 目录下,并且应该至少包含以下几个部分: - 设置最小兼容标准:`cmake_minimum_required(VERSION 3.10)` - 定义目标可执行文件或共享对象名称:`add_library(add SHARED src/add.cpp)` 3. **新增 .cpp/.h 文件** 将新的头文件(.h)与实现文件(.cpp)存放到指定路径(`cpp/types/libadd`)内以便统一管理。同时更新上述提到过的 `CMakeLists.txt` 来反映最新加入的内容。 4. **验证集成效果** 编写简单的测试函数用于确认 ArkTS 是否能够正常调用 SO 动态链接库里的接口[^2]。例如可以在 ETS 层面尝试加载该动态库并通过反射机制获取其中的方法句柄。 ```typescript import featureAbility from '@ohos.ability.featureAbility'; let context = featureAbility.getContext(); try{ let result = globalThis.lib.add(5,6); }catch(e){ console.error('Error occurred while calling native function:', e.message); } console.info("Result of addition is "+result); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值