napi调用第三方库,有人知道怎么弄吗?

napi调用第三方库

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

1、编写代码

新增一个简单的工具类,该工具类中有一个Add方法,调用该方法返回两个数之和

util.h

#ifndef ADDDEMO_UTIL_H 
#define ADDDEMO_UTIL_H 
​ 
int Add(int a,int b); 
​ 
#endif //ADDDEMO_UTIL_H

util.cpp

#include <iostream> 
#include "include/util.h" 
​ 
int Add(int a, int b) { 
   return a + b; 
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.26) 
project(AddDemo) 
​ 
set(CMAKE_CXX_STANDARD 11) 
include_directories(${PROJECT_SOURCE_DIR}/include) 
​ 
add_library(AddDemo SHARED util.cpp)

2、将上面的代码编译成动态链接库

3、增加依赖

  • 在src/main/cpp下面增加文件夹thirdPart,并将util.h头文件加入
  • 在libs下面的armeabi-v7a和arm64-v8a下增加步骤2中编译好的so文件
  • CMakeLists.txt文件中添加so库的动态链接
target_link_libraries(entry PUBLIC 
libace_napi.z.so 
libhilog_ndk.z.so 
${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libAddDemo.so #此处是引用的第三方库 
) 
​ 
target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/)
  • build-profile.json5中添加armeabi-v7a和arm64-v8a。注意这里如果不需要多个架构的只填一个也可以
"externalNativeOptions": { 
 "path": "./src/main/cpp/CMakeLists.txt", 
 "arguments": "", 
 "cppFlags": "", 
 "abiFilters": [ 
   "armeabi-v7a", 
   "arm64-v8a" 
] 
}

4、调用

此时可以直接引用头文件进行调用

#include "thirdPart/util.h" 
static napi_value Add(napi_env env, napi_callback_info info) { 
   size_t requireArgc = 2; 
   size_t argc = 2; 
   napi_value args[2] = {nullptr}; 
​ 
   napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); 
​ 
   napi_valuetype valuetype0; 
   napi_typeof(env, args[0], &valuetype0); 
​ 
   napi_valuetype valuetype1; 
   napi_typeof(env, args[1], &valuetype1); 
​ 
   double value0; 
   napi_get_value_double(env, args[0], &value0); 
​ 
   double value1; 
   napi_get_value_double(env, args[1], &value1); 
​ 
   napi_value sum; 
   //   napi_create_double(env, value0 + value1, &sum); 
   napi_create_double(env, Add(value0, value1), &sum); 
​ 
​ 
   return sum; 
}
分享
微博
QQ
微信
回复
2024-05-24 21:43:37
相关问题
第三方怎么装鸿蒙系统?
924浏览 • 1回复 待解决
第三方js迁移有懂的
887浏览 • 1回复 待解决
HarmonyOS支持的第三方的列表
520浏览 • 1回复 待解决
OHPM包管理怎么安装第三方
2676浏览 • 1回复 待解决
react-native 第三方使用npm更新
574浏览 • 1回复 待解决
开发第三方SDK如何编译?
12053浏览 • 2回复 待解决
ArkTS不支持使用第三方的js
2335浏览 • 1回复 待解决
HarmonyOS如何移植第三方MCU?
7509浏览 • 1回复 待解决
鸿蒙有哪些支持的第三方UI框架
2278浏览 • 1回复 待解决
是否支持使用第三方的webview内核
390浏览 • 1回复 待解决
通过ohpm install 第三方npm包,报错
511浏览 • 1回复 待解决
Text控件使用第三方字的文档
343浏览 • 1回复 待解决