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

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

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

本文主要介绍如何实现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++成员函数
511浏览 • 1回复 待解决
通过Native 调用c++实现文本绘制
466浏览 • 1回复 待解决
native侧如何调用静态方法?
618浏览 • 1回复 待解决
TaskPool是否可以访问静态成员
744浏览 • 1回复 待解决
ArkTSC++之间交互
428浏览 • 1回复 待解决
native侧如何使用静态方法
481浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
526浏览 • 1回复 待解决
Native调用ArkTS函数
353浏览 • 1回复 待解决
C++调用ArkTS 定义方法
570浏览 • 1回复 待解决
ArkTSC++互相直接调用
513浏览 • 1回复 待解决
静态路由访问外网不通
1483浏览 • 0回复 待解决