- 2024-11-21使用 vscode 调试 nodejs 代码
继前一篇:使用cmake.js在Windows上编译js代码我们已经能在vscode上成功的编译出js代码,那我们该如何断点调试js代码以及js引用的C库源码呢首先要先以Debug模式编译js代码cmake-jscleancmake-jscompile-D找到debug生成的pdb文件,这个很重要,关
- 2024-11-14高级语言调用C接口(二)回调函数(1)
前言先说一下上一篇文章给出了各高级语言类型和C类型的对应关系,只包含基本类型,不包含结构体等复杂结构,高级语言只有常见的JAVA(Android通用)、C#、Python、Arkts(鸿蒙系)。其它语言如delphi、PB之类的古老语言目前使用的人非常稀少,默认不写了;还有js调用需要编译位wasm,但限制非
- 2024-11-06C++ addon
node-addon-apihttps://github.com/nodejs/node-addon-apihttps://www.cnblogs.com/ajanuw/p/14404060.htmlhelloworld#include<napi.h>usingnamespaceNapi;StringMethod(constCallbackInfo&info){Envenv=info.Env();returnString::Ne
- 2024-11-04HarmonyOS 开发实践——跨语言的复杂参数类型传递
- 2024-10-26HarmonyOS:Node-API典型场景开发(2)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18504462➤如果链接不是为敢技术的博客园地址,则可能是
- 2024-10-26HarmonyOS:Node-API实现跨语言交互(3)使用Node-API实现跨语言交互开发流程
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18504008➤如果链接不是为敢技术的博客园地址,则可能是
- 2024-10-26HarmonyOS:Node-API实现跨语言交互(2)Node-API支持的数据类型和接口
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18502733➤如果链接不是为敢技术的博客园地址,则可能是
- 2024-09-27鸿蒙(HarmonyOS)实战开发篇——基于Napi调用ArkTS/系统接口
场景描述:app应用在native侧调用系统库/arkts模块的方法。应用经常会遇到如下的业务诉求:场景一:系统提供了ArkTS接口,但未提供对应的NDK接口,当伙伴使用C++代码实现业务逻辑时,部分系统能力需要依赖系统ArkTS接口;场景二:系统仅提供了ArkTS异步接口,未提供对应的NDK接口,当
- 2024-09-08【最新鸿蒙开发】带你简单了解Native适配开发
引言NDK(NativeDevelopmentKit)是HarmonyOSSDK提供的NativeAPI、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了HarmonyOS一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Nod
- 2024-09-04HarmonyOS Node-API支持的数据类型
一、Node-API的数据类型 1、napi_status 是一个枚举数据类型,表示Node-API接口返回的状态信息。每当调用一个Node-API函数,都会返回该值,表示操作成功与否的相关信息。typedefenum{napi_ok,napi_invalid_arg,napi_object_expected,napi_
- 2024-09-02HarmonyOS实战开发:NAPI接口规范开发
简介NAPI(NativeAPI)组件是一套对外接口基于Node.jsN-API规范开发的原生模块扩展开发框架。图1 NAPI组件架构图NativeEngineJS引擎抽象层,统一JS引擎在NAPI层的接口行为。ModuleManager管理模块,用于模块加载、模块信息缓存。ScopeManager管理NativeValue的生命周
- 2024-09-01HarmonyOS开发实战:ArkTS接口绑定
场景介绍通过napi_wrap将ArkTS对象与Native的C++对象绑定,后续操作时再通过napi_unwrap将ArkTS对象绑定的C++对象取出,并对其进行操作。使用示例接口声明、编译配置以及模块注册接口声明//index.d.tsexportclassMyObject{constructor(arg:number);plusOne:(
- 2024-08-07HarmonyOS 音视频之音频采集实战
HarmonyOS音视频之音频采集实战背景应用开发过程中很多场景都有音频采集需求,比如聊天功能的发送语音功能,实时语音转文本功能,实时语音通话,实时视频通话等。在Android和iOS端,系统提供了两种形式:实时音频流采集音频文件录制系统还提供了不同形式的API,比如Android:AudioRec
- 2024-07-22GMSSL2.x编译鸿蒙静态库和动态库及使用
一、编译环境准备1.1开发工具DevEco-Studio下载。1.2SDK下载 下载编译第三方库的SDK有两种方式,第一种方式从官方渠道根据电脑系统选择对应的SDK版本,第二种方式通过DevEco-Studio下载SDK。本文只介绍通过DevEco-Studio下载SDK的方式。安装SDK到本地根据SDK安装位
- 2024-07-05使用napi实现ts枚举类型
在napi模块中定义枚举类型枚举类型不是js的原生类型,它是ts中独有的语法,但是napi方法仅支持操作js对象。下文将提供一个demo用来实现一个js的enum类。分析ts枚举类的实现方式定义一个ts枚举类TypeScript代码如下:enumEnumClass{VAL_A=0,VAL_B,VAL_C,}
- 2024-06-12用Napi编写nodejs Addon并调用dll
用Napi编写nodejsAddon并调用dllnpdejs调用C++addon并没有先前那篇随笔那么复杂,这是一篇补充说明:说明如何使用c++项目的include头文件以及lib,dll引入到addon内使用一、使用VS编写DLL导出项目步骤1:通过VisualStudio(推荐2019及其以上)新建一个“具有导出项的(DLL)动态链接库
- 2024-04-20HarmonyOS NEXT应用开发—在Native侧实现进度通知功能
介绍本示例通过模拟下载场景介绍如何将Native的进度信息实时同步到ArkTS侧。效果图预览使用说明点击“StartDownload“按钮后,Native侧启动子线程模拟下载任务Native侧启动子线程模拟下载,并通过Arkts的回调函数将进度信息实时传递到Arkts侧实现思路前端进度条使用Progr
- 2024-04-18HarmonyOS NEXT应用开发之使用AKI轻松实现跨语言调用
介绍针对JS与C/C++跨语言访问场景,NAPI使用比较繁琐。而AKI提供了极简语法糖使用方式,一行代码完成JS与C/C++的无障碍跨语言互调,使用方便。本示例将介绍使用AKI编写C++跨线程调用JS函数场景。通过调用C++全局函数,创建子线程来调用JS函数,实现对变量value的加10操作,为开发者使用AKI提
- 2024-04-13某函数传参
在N-API中直接从一个函数向另一个函数传递参数稍微有点复杂,因为你需要正确地处理napi_value数组和环境(napi_env)。如果你想在一个N-API函数(CallAddFunction)中构造参数并直接调用另一个N-API函数(GetAddCheckArg),并且管理这些参数的传递,你将需要手动构建一个新的na
- 2024-04-07鸿蒙Native输出so动态库,并提供给第三方导入使用
前言:DevEcoStudio版本:4.0.0.600API:9最近在学习鸿蒙的Native输出so动态库,下面就给大家分享下我的学习心得及在实现过程中遇到的问题。实现需求:通过so库输出文本内容“你好,鸿蒙!”参考资料:OpenHarmonyNativeAPI实现过程:1、创建Native工程File-->New-->createProject
- 2024-03-28Napi::CallbackInfo Napi::Env
Napi::ValueEncryptPassword(constNapi::CallbackInfo&info){Napi::Envenv=info.Env();/*Napi::Envenv=info.Env();if(info.Length()<2){Napi::TypeError::New(env,"参数个数异常").ThrowAsJavaScriptExcepti
- 2024-03-24Linux收到一个网络包是怎么处理的?
目录摘要编辑1从网卡开始2硬中断,有点短2.1GameOver3接力——软中断3.1NET_RX_SOFTIRQ软中断的开始3.2数据包到了协议栈3.3网络层处理3.4传输层处理4应用层的处理5总结摘要 一个网络包的接收始于网卡,经层层协议栈的解析,终于应用层。
- 2024-02-02Flutter for OpenHarmony
OpenHarmonySIG组织在Gitee开源了兼容OpenHarmony的Flutter。该组织主要用于孵化OpenHarmony相关的开源生态项目。▲仓库地址:https://gitee.com/openharmony-sig/flutter_flutter根据README的描述,此仓库是基于FlutterSDK对OpenHarmony的兼容拓展,可支持使用Flutte
- 2024-01-31鸿蒙二进制数组创建
背景c++层数据都是二进制,需要转换成arrayBuffer透传到ets层给业务使用,但是鸿蒙的使用下面两个api创建出来的二进制数组数据都是错误的。接口napi_create_arraybuffer:这个接口只能创建空的二进制数组,没办法把char的内容丢进去创建napi_create_external_arraybuffer:这个接口支持
- 2024-01-30收包
整体流程图三、网络接口层3.1概述数据包在本层主要处理流程有五:网卡收到数据包,DMA方式写入RingBuffer,发出硬中断;内核收到硬中断,NAPI加入本CPU的轮询列表,发出软中断;内核收到软中断,轮询NAPI并执行poll函数从RingBuffer取数据;GRO操作(默认开启),合并多个数