node 调用C或C++的dll库
1.安装 ffi 调用dll库 (本文主要介绍)
2.node addon N-API (未研究)
3.node Electron 使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 (可用)
1. 环境
# python 3 版本
python3 -m pip install gyp-next
python 2.7
VS 任意版本 (2019)
# 没有安装python和VS执行 已安装忽略此步骤
npm install --global windows-build-tools
# 设置python 安装路径
npm config set PYTHON %PYTHON2%
# 设置 VS 版本
npm config set msvs_version 2019
2. 安装gyp
npm install -g node-gyp
# 如果报错找不到node-gyp.js 设置node-gyp.js 路径
npm config set node_gyp "node D:\nodejs\node_global\node_modules\node-gyp\bin\node-gyp.js"
# 如果安装失败 清理缓存 卸载 重新安装
npm cache clean -f
npm uninstall node-gyp -g
3.创建vue项目
# 安装webpack webpack-cli
npm install webpack -g
npm install webpack webpack-cli -g
# 安装vue-cli
npm install -g @vue/cli
vue -V
# 安装vue的全局插件
npm install -g @vue/cli-init
# 创建一个基于webpack模块的新项目 projectName可以自行修改
vue init webpack projectName
# 进入项目目录 执行npm install 安装依赖
npm install
# 启动项目
npm run dev
# 在浏览器舒服localhost:8080 访问可以看到vue的主页 完成
4.安装 ffi
npm install ffi
5.调用系统dll 测试 编写test.js
const ffi = require("ffi");
const User32 = ffi.Library('user32', {
'GetWindowLongPtrW': ['int', ['int', 'int']],
'SetWindowLongPtrW': ['int', ['int', 'int', 'long']],
'GetSystemMenu': ['int', ['int', 'bool']],
'DestroyWindow': ['bool', ['int']]
})
console.log(User32.GetWindowLongPtrW);
6.node 调用js
node test.js
#执行成功
{ [Function: proxy] async: [Function] }
7.将js放到vue项目下
# 引入js 调用dll方法
报错 目前还没有解决 不知道大佬们有没有解决办法,求指点!!