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

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

HarmonyOS
2024-03-19 16:10:34
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
牙膏只用咸的

首先需要引入对应的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方法能否直接导出
1990浏览 • 1回复 待解决
HarmonyOS 项目使用c++导出函数报错
282浏览 • 1回复 待解决
如何修改C++版本?C++支持情况?
1160浏览 • 1回复 待解决
ArkTS层通过接口访问C++层对象
371浏览 • 1回复 待解决
ArkTS/js怎样与C++进行交互?
228浏览 • 1回复 待解决
使用C++进行HarmonyOS开发的问题
743浏览 • 2回复 待解决
HarmonyOS导出多个类问题
454浏览 • 1回复 待解决
c++ 有vp2px 的接口么?
1859浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
1925浏览 • 1回复 待解决
HarmonyOS 媒体文件 C++ 访问的问题
53浏览 • 1回复 待解决