HarmonyOS Empty Ability工程调用C、C++代码

我目前创建的工程是Empty Ability,需要调用C、C++代码,请问怎么操作

HarmonyOS
2024-12-25 11:43:59
浏览
收藏 1
回答 2
回答 2
按赞同
/
按时间
zxjiu

HarmonyOS 的IDE调用C++的代码的,具体操作步骤,参考以下步骤:

1)新建Native项目

  • 项目会自动生成“src\main\cpp”文件夹
  • cpp文件夹下可以放cpp的源文件
  • CMakeLists.txt 是用来链接C侧和Arkts侧的
  • napi_init.cpp :自动生成的,里面有模块注册、模块导出等,决定要向ArkTS侧开发哪些接口

2)src\main\cpp”文件下创建“myMath”文件夹,添加MyMath.cpp、MyMath.h文件

//MyMath.h
#ifndef TEST006NATIVEORIGINAL_MYMATH_H
#define TEST006NATIVEORIGINAL_MYMATH_H

double Plus(double a,double b);

#endif //TEST006NATIVEORIGINAL_MYMATH_H
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
//MyMath.cpp
#include "MyMath.h"
double Plus(double a,double b){
    return a+b+40;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

3)napi_init.cpp 中引用MyMath.h中的方法

//napi_init.cpp
#include "./myMath/MyMath.h"
...
static napi_value Add(napi_env env, napi_callback_info info)
{
...
double resSum = Plus(value1 ,value0);
...
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

4)CMakeLists.txt (其他地方不用动)

include_directories(${NATIVERENDER_ROOT_PATH}
${NATIVERENDER_ROOT_PATH}/include
  ./myMath)     #------->添加

add_library(entry SHARED napi_init.cpp
myMath/MyMath.cpp)    #------->添加
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

5)运行日志中可以看到“Test NAPI 2 + 3 = 45”

分享
微博
QQ
微信
回复
2024-12-25 13:17:55
HMOS_Professor
  • napi_init.cpp :自动生成的,里面有模块注册、模块导出等,决定要向ArkTS侧开发哪些接口
分享
微博
QQ
微信
回复
2025-04-07 16:02:46


相关问题
HarmonyOS 关于C++工程编译事项
867浏览 • 1回复 待解决
c/c++层主动调用ArkTS存在问题
1619浏览 • 1回复 待解决
HarmonyOS 如何调用标准C++
1213浏览 • 1回复 待解决
HarmonyOS 工程里ndk怎么指定c++版本
1612浏览 • 1回复 待解决
HarmonyOS taskpool无法执行C++代码
986浏览 • 1回复 待解决
C++调用ArkTS 定义的方法
3316浏览 • 1回复 待解决
ArkTS与C++互相直接调用
4030浏览 • 1回复 待解决
如何修改C++版本?C++支持情况?
2136浏览 • 1回复 待解决
HarmonyOS ArkTS与C/C++的交互
1729浏览 • 1回复 待解决