相关问题
#鸿蒙通关秘籍#如何在多个C++线程间共享ArkTS中Sendable对象?
276浏览 • 1回复 待解决
如何在C++子线程调用ArkTS方法?(线程安全)
1659浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过Native C/C++创建子进程?
266浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过C/C++实现数据持久化?
253浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙系统中如何通过Node-API进行ArkTS和C++间的函数调用?
340浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中通过napi_wrap绑定ArkTS对象与C++对象?
274浏览 • 1回复 待解决
HarmonyOS在C++线程上调用napi_create_ark_runtime,如何调用到js层的对象
747浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在非ArkTS线程中回调ArkTS接口?
390浏览 • 1回复 待解决
如何在C++的子线程调用从ArkTS传递过来的function
2272浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用AKI实现C++跨线程调用JS函数,提高开发效率?
154浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中创建和管理Worker线程?
351浏览 • 2回复 待解决
HarmonyOS 如何在ArkTS中向C++层注册回调,C++层如何调用回调方法?
550浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在C/C++与ArkTS之间进行错误对象的跨语言传递?
266浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在C/C++中实现对文件的持久化权限管理?
264浏览 • 1回复 待解决
如何在Native侧C++子线程直接调用ArkTS接口,不用通过ArkTS侧触发回调
2344浏览 • 1回复 待解决
HarmonyOS C++子线程调用ArkTS业务层接口方法
119浏览 • 1回复 待解决
HarmonyOS C++自创线程如何回调到ArkTS应用中?
366浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在主线程中加载系统模块并调用其函数?
237浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何使用AKI实现C++跨线程调用JS函数,并进行加10操作?
180浏览 • 0回复 待解决
ArkTS调用C++类中的成员函数
1490浏览 • 1回复 待解决
#鸿蒙通关秘籍# 怎样在HarmonyOS NEXT开发中处理C++与ArkTS异步接口的交互调用?
171浏览 • 0回复 待解决
如何在C/C++ 创建ArkTS的对象
2481浏览 • 1回复 待解决
HarmonyOS ArkTS如何调C++的api,或C++如何调用ArkTS的api
218浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中为线程设置优先级QoS?
185浏览 • 1回复 待解决
在鸿蒙系统的C++线程上调用ArkTS能力需要创建一个ArkTS执行环境。可以通过Node-API接口实现。首先,创建基础运行环境,然后加载自定义ArkTS模块。在加载的模块中,使用
napi_get_named_property
方法查找函数newSendable
。接下来,通过napi_call_function
调用并返回结果。为了防止内存泄漏,最后销毁ArkTS环境。cpp #include "napi/native_api.h" #include <thread>
static void *CreateArkRuntimeFunc(void *arg) { napi_env env = nullptr; napi_status ret = napi_create_ark_runtime(&env); if (ret != napi_ok) { std::abort(); } napi_value test = nullptr; ret = napi_load_module_with_info(env, "entry/src/main/ets/pages/SendableObjTest", "com.example.myapplication/entry", &test); if (ret != napi_ok) { std::abort(); } napi_value sendableObjTest = nullptr; ret = napi_get_named_property(env, test, "SendableObjTest", &sendableObjTest); if (ret != napi_ok) { std::abort(); } napi_value newSendable = nullptr; ret = napi_get_named_property(env, sendableObjTest, "newSendable", &newSendable); if (ret != napi_ok) { std::abort(); } napi_value result = nullptr; ret = napi_call_function(env, sendableObjTest, newSendable, 0, nullptr, &result); if (ret != napi_ok) { std::abort(); } int value0; napi_get_value_int32(env, result, &value0); if (value0 != 1024) { std::abort(); } ret = napi_destroy_ark_runtime(&env); return nullptr; }