从零开始写 win32 打印机任务管理的 node 模块 (2)node-addon-api

千里之行,从写一个 node addon 开始。因为需要一个执行 Win32 API 的项目开展实验和测试。容易混淆的 3 个概念:c++ addons api, N-API, node-addon-api. 简单地说,c++ addons api 表示最底层 api,直接从它来写会非常复杂。N-API 在这前者之上做了一层抽象,解决了不同版本兼容的问题,但也还是很复杂,基于c 的实现。而 node-addon-api 是N-API 的 C++封装,用起来相对容易很多。所以我们选择了 node-addon-api 来开发。
 

1 开发环境:

在此假设你已经安装了 git 和 node。在命令行执行
npm install --global --production windows-build-tools
将安装 vs build tools 和 python,cc,make 用于编译。
编写代码可以使用任意的你喜欢的编辑器。个人偏爱 vs code。
 

2 第一个项目

安装脚手架
 
npm install -g yo    // 国内网络困难请用 npm --registry https://registry.npm.taobao.org install -g yo
npm install -g generator-napi-module
 
生成 node addon 项目
 
mkdir win32-printer
cd win32-printer
yo napi-module
 
报告错误
yo : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yo.ps1,因为在此系统上禁止运行脚本
 
解决方法:
用管理身份打开 powershell,执行命令
set-ExecutionPolicy RemoteSigned
将计算机上的 执行策略更改为 RemoteSigned。检查:
get-ExecutionPolicy
 
运行测试一下
命令
npm test
 
出现
Tests passed- everything looks OK!
说明编译环境搭建无误了。
 

3 修改项目

 
添加编译指令
修改 package.json 的内容:
"scripts": {
    // 添加的内容
    "build": "node-gyp build",
    "start": "node --napi-module ./test/run.js”,
    
    "test": "node --napi-modules ./test/test_binding.js"
  },

添加文件 ./src/run.js

const Win32Printer = require("../lib/binding.js");

const result = Win32Printer("hello");

console.log(result)

修改下 src/win32_printer.cc

const Win32Printer = require("../lib/binding.js");
// 把 return 的文本改了一下
const result = Win32Printer("hello");

console.log(result)

编译和执行

命令执行
npm run build
npm run start
 
屏幕打出 mini world 编译执行成功
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值