如果需要NAPI C++层业务,调用 ArkTS层的类静态成员、静态函数,怎么交互实现

如果需要NAPI C++层业务,调用 ArkTS层的类静态成员、静态函数,怎么交互实现

HarmonyOS
2024-05-23 21:46:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
莫莫莫小贝

本文主要介绍如何实现NAPI C++层业务,调用 ArkTS层的类静态成员、静态函数

使用的核心API

Native API在应用工程中的使用指导

核心代码解释

.cpp文件中编写TransObect方法

static napi_value TransObect(napi_env env, napi_callback_info info) 
{ 
size_t argc = 1; 
napi_value js_cb; 
napi_get_cb_info(env, info, &argc, &js_cb, nullptr, nullptr); 
​ 
napi_value str; 
napi_create_string_utf8(env, "John", 4, &str); 
napi_set_named_property(env, js_cb, "sMsg", str); 
​ 
napi_value staticMethod; 
napi_get_named_property(env, js_cb, "staticMethod", &staticMethod); 
napi_call_function(env, js_cb, staticMethod, 0, nullptr, nullptr); 
​ 
return nullptr; 
}

通过import的方式,引入native能力。

import testNapi from 'libentry.so'; 
​ 
class tsClass{ 
static sMsg:string = "Hello"; 
static staticMethod() { 
console.log('Static method called. sMsg = ' + tsClass.sMsg); 
} 
} 
​ 
@Entry 
@Component 
struct Index { 
@State message: string = 'Hello World'; 
​ 
build() { 
Row() { 
Column() { 
Button('Test') 
.fontSize(50) 
.fontWeight(FontWeight.Bold) 
.onClick(() => { 
testNapi.transobject(tsClass); 
}) 
} 
.width('100%') 
} 
.height('100%') 
} 
}

native侧暴露给ArkTS侧接口的声明。

export const transobject: (a: Object) => void;

总结,通过该方式实现NAPI C++层业务,调用 ArkTS层的类静态成员、静态函数

分享
微博
QQ
微信
回复
2024-05-24 17:56:07
相关问题
ArkTS调用C++成员函数
1314浏览 • 1回复 待解决
HarmonyOS NAPI调用ArkTS静态方法
595浏览 • 1回复 待解决
ArkTS通过接口访问C++对象
371浏览 • 1回复 待解决
c/c++主动调用ArkTS存在问题
380浏览 • 1回复 待解决
通过Native 调用c++实现文本绘制
1037浏览 • 1回复 待解决
HarmonyOS 怎么调用C语言.a静态
447浏览 • 1回复 待解决
HarmonyOS 从C++触发通知到ArkTS
75浏览 • 1回复 待解决
native侧如何调用静态方法?
1126浏览 • 1回复 待解决
TaskPool是否可以访问静态成员
1778浏览 • 1回复 待解决
HarmonyOS ArkTSC/C++交互
747浏览 • 1回复 待解决