鸿蒙-ArkTS和Native之间的交互使用1创建NDK工程

仿佛云烟
发布于 2025-6-28 16:44
浏览
0收藏

引言:

鸿蒙-ArkTS和Native之间的交互使用1创建NDK工程-鸿蒙开发者社区


        NDK(Native Development Kit)是HarmonyOS SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了HarmonyOS一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等,并没有提供ArkTS/JS API的完整能力。


我们在开发的过程中难免会遇到三方语言的调用问题,NDK是目前非常成熟和完善的工具包。


所以接下来我们将学习如何使用NDK进行跨语言的Node-API调用和原生的ArkTS的交互。


首先:


1.创建NDK工程


        根据工程创建向导,选择Native C++工程模板,然后单击Next


鸿蒙-ArkTS和Native之间的交互使用1创建NDK工程-鸿蒙开发者社区


在工程配置页面,根据向导配置工程的基本信息后,单击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。


在工程entry/src/main目录下会包含cpp目录,该目录文件的详细介绍请参见​​C++工程目录结构​​。


鸿蒙-ArkTS和Native之间的交互使用1创建NDK工程-鸿蒙开发者社区


重点介绍一下CMakeLists.txt,它是连接的桥梁。



  • src > main > cpp > CMakeLists.txt:CMake配置文件,提供CMake构建脚本。


根目录CMakeLists.txt内容


# 指定CMake的最小版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)


# 工程名称,这里我们就叫HELLO
PROJECT(HELLO)


#添加一个子目录并构建该子目录。
ADD_SUBDIRECTORY(src)

SET(LIBHELLO_SRC hello.cpp)



//设置项目根目录,用来调用Lib库。
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})


//# 添加一个libsum动态库目标,​​编译成功会生成一个libsum.so​​ add_library(HELLO SHARED napi_init.cpp)



//# 添加一个libsum动态库目标,​​编译成功会生成一个libsum.so​​ add_library(HELLO SHARED napi_init.cpp)



//# 指定Hello目标include目录路径


target_link_libraries(Hello PUBLIC ../include)



//# 指定Hello目标需要链接的库名字


target_link_libraries(Hello PUBLIC sum)


源码内容


然后就是对源码的编写了


hello.cpp源码


#include 
#include "sum.h"


int main(int argc,const char **argv)
{
    std::cout<< "hello world!" <<std::endl;
    int total = sum(1, 100);
    std::cout<< "Sum 1 + 100=" << total << std::endl;
    return 0;
}


sum.h源码


int sum(int a, int b);


sum.cpp源码


#include 
    
int sum(int a, int b)
{
    return a + b;
}


通过上述配置我们就得到了一个简单的NDK项目了。


后续我们进行C代码的编写和调用。

分类
收藏
回复
举报
回复
    相关推荐