如何对多个C++源文件中接口进行导出声明

IDE创建的默认C++工程中是只有一个hello.cpp,想在C++侧加一个 a.cpp文件,并且希望可以从a.cpp文件中导出一个函数给ArkTS侧调用,具体如何实现?

HarmonyOS
2024-03-19 16:10:34
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
hujianwu

首先需要引入对应的a.cpp对应的头文件a.h,然后在初始化函数Init中进行接口映射,最后通过index.d.ts文件将接口导出。参考代码如下:

在NumberType.cpp文件中实现Add函数业务功能。

// NumberType.cpp 
#include "NumberType.h"    // 引入头文件 
// NumberType是类名,Add是它的函数 
napi_value NumberType::Add(napi_env env, napi_callback_info info) { 
    // ... 业务功能实现代码 
}

在hello.cpp文件中引入头文件并初始化函数Init中进行接口映射。

#include "NumberType.h" 
#include "napi/native_api.h" 
// ... 
EXTERN_C_START 
static napi_value Init(napi_env env, napi_value exports) { 
    /* Associate the externally provided interface with the written method, for example, associate add with the Add 
     * method. 
    */ 
    napi_property_descriptor desc[] = { 
        {"add", nullptr, NumberType::Add, nullptr, nullptr, nullptr, napi_default, nullptr}}; 
    // napi_define_properties construct a return value that contains a list of methods that correspond. 
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 
    return exports; 
} 
EXTERN_C_END 
// ...

在接口声明文件(index.d.ts)中对要传递给ArkTS侧的函数进行导出。

// index.d.ts  
export const add: (a: number, b: number) => number;

参考链接

系统服务-Native XComponent组件的使用(ArkTS)

分享
微博
QQ
微信
回复
2024-03-19 23:41:59
相关问题
C++的native方法能否直接导出
245浏览 • 1回复 待解决
c++ 有vp2px 的接口么?
57浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
38浏览 • 1回复 待解决
如何C/C++ 创建ArkTS的对象
294浏览 • 1回复 待解决
如何多个 RDB 文件恢复 Redis?
998浏览 • 1回复 待解决
如何Serviceabbility进行调试?
1012浏览 • 1回复 待解决
如何获取HSP的资源文件
286浏览 • 1回复 待解决
如何获取应用自身的源文件路径
287浏览 • 1回复 待解决
如何C++ 提供回调函数?
568浏览 • 1回复 待解决
如何C++层面获取系统时间?
2217浏览 • 2回复 待解决
C++ 在鸿蒙开发适合做什么
8458浏览 • 1回复 待解决
鸿蒙如何获取资源文件种的路径
13794浏览 • 3回复 待解决
如何C++项目中使用pthread
214浏览 • 1回复 待解决
如何鸿蒙设备进行ui测试?
1523浏览 • 1回复 待解决
如何相册图片进行编辑裁剪
178浏览 • 1回复 待解决
如何图片进行高斯模糊处理
198浏览 • 1回复 待解决
鸿蒙的资源文件都又什么作用?
1886浏览 • 1回复 待解决