如何对多个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方法能否直接导出
954浏览 • 1回复 待解决
如何修改C++版本?C++支持情况?
395浏览 • 1回复 待解决
c++ 有vp2px 的接口么?
673浏览 • 1回复 待解决
如何C/C++ 创建ArkTS的对象
982浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
820浏览 • 1回复 待解决
如何多个 RDB 文件恢复 Redis?
1696浏览 • 1回复 待解决
ArkTS调用C++的成员函数
591浏览 • 1回复 待解决
如何实现ArkTS与C/C++的数组转换
36浏览 • 1回复 待解决
C++ 如何获取操作 Arkts 实例
445浏览 • 1回复 待解决
基于HAR的跨模块C++文件引用
335浏览 • 1回复 待解决
如何获取HSP的资源文件
1008浏览 • 1回复 待解决
如何Serviceabbility进行调试?
1798浏览 • 1回复 待解决
如何导出设备的数据库文件并查看
960浏览 • 1回复 待解决
如何实现ArkTS与C/C++的HashMap转换?
502浏览 • 0回复 待解决