场景介绍
通过napi_wrap将ArkTS对象与Native的C++对象绑定,后续操作时再通过napi_unwrap将ArkTS对象绑定的C++对象取出,并对其进行操作。
使用示例
-
接口声明、编译配置以及模块注册
接口声明
// index.d.ts export class MyObject { constructor(arg: number); plusOne: () => number; public get value(); public set value(newVal: number); }
编译配置
// CMakeLists.txt # the minimum version of CMake. cmake_minimum_required(VERSION 3.4.1) project(object_wrap) set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include) add_definitions("-DLOG_DOMAIN=0x0000") add_definitions("-DLOG_TAG=\"testTag\"") add_library(object_wrap SHARED object_wrap.cpp) target_link_libraries(object_wrap PUBLIC libace_napi.z.so libhilog_ndk.z.so)
模块注册
// object_wrap.cpp class MyObject { public: static napi_value Init(napi_env env, napi_value exports); static void Destructor(napi_env env, void* nativeObject, void* finalize_hint); private: explicit MyObject(double value_ = 0); ~MyObject(); static napi_value New(napi_env env, napi_callback_info info); static napi_value GetValue(napi_env env, napi_callback_info info); static napi_value SetValue(napi_