化妆品网站设计方案,wordpress文章关键词和描述,启博微分销,微信小程序插件开发electron使用ffi-napi环境搭建
附打包好的ffi-napi可以直接放到项目目录下使用#xff0c;避免以后麻烦
一、安装node.js
Node.js官网#xff1a;https://nodejs.org/zh-cn/download#xff0c;选择LTS长期稳定版本即可
需要注意Node.js 区分32和64位#xff0c;32位版…electron使用ffi-napi环境搭建
附打包好的ffi-napi可以直接放到项目目录下使用避免以后麻烦
一、安装node.js
Node.js官网https://nodejs.org/zh-cn/download选择LTS长期稳定版本即可
需要注意Node.js 区分32和64位32位版本只能加载32位的DLL64位的版本只能加载64位的DLL 建议下载x64nodejs的位数决定后续electron以及node-gyp的位数我刚开始想编译win32但是一直编译不通过报错 报错npm error ‘“call”’ 不是内部或外部命令也不是可运行的程序列或批处理文件。 安装教程参考https://www.runoob.com/nodejs/nodejs-install-setup.html 本来我在这里勾选了自动安装Visual Studio Build Tools和Python。但是后面发现下载需要3G太大了而且我本来电脑上装了VS2017我想用自带的所以后面又取消安装了。不知道这里直接安装的话会不会就少了后续很多麻烦。。。。 cmd命令行查看安装已成功
二、安装Electron
方法一使用node原始包管理工具npm安装。-g 全局安装
npm install -g electron方法二使用淘宝提供的cnpm
npm install -g cnpm --registryhttps://registry.npm.taobao.org然后使用cnpm安装
cnpm install -g electron安装报错
CERT_HAS_EXPIRED 错误通常是指在使用 HTTPS 协议进行请求时SSL 证书已过期导致请求失败 解决https改为http 注意直接使用npm install electron他会下载npm包管理中的较新版本的electron例如v34.2.0 在electron20.3.8之后调用C动态库会出现 Error: Error in native callback 原因Electron 21 及更高版本将启用 V8 内存隔离区,这将对一些原生模块产生影响。 解决方案降低electron版本目前论坛大部分使用20.3.820.3.8版本太旧我使用npm到国外官方网站下载一直下载不成功…最后使用cnpm安装成功的
cnpm install electron20.3.8三、安装ffi-napi
安装python
选择最新版本python3.13.2 64位 下载地址https://devguide.python.org/versions/ 安装时记得勾选写入环境变量
安装VS
VS2022 Community下载地址https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCommunity 我安装的是vs2022 community(官方网站上写的不知道专业版可不可行) 查看ffi-napi官网描述如下 安装 Visual C 构建环境 对于 Visual Studio 2019 或更高版本请使用Visual Studio CommunityDesktop development with C中的工作负载。对于 Visual Studio 2019 之前的版本请使用选项安装Visual Studio 构建工具Visual C buildtools 论坛上看到的 我的系统时win10并且我安装VS2017时已经安装了Windows 10 SDK, 所以我取消了默认的windows 11 SDK的安装
安装ffi-napi
此时安装的软件各个版本如下所示 安装ffi-napi时会用到node-gyp编译工具他对vs版本匹配非常严格 安装成功
四、引用ffi-napi模块
主进程中main.js
const { app, BrowserWindow, ipcMain} require(electron);
const ffi require(ffi-napi);
const ref require(ref-napi);
const path require(path);const dllPath path.join(__dirname, ./test_api-x64.dll);
//test为dll中导出的接口第一个int为返回值类型第二、三个是参数类型
const libm ffi.Library(dllPath, {test: [int,[ int,int]]
});// 处理 IPC 消息
ipcMain.on(call-test, (event, args) {const { a, b } args;console.log(调用DLL函数 test参数:, a, b);try {const result libm.test(a, b);event.sender.send(test-result, { a, b, result });} catch (error) {console.error(DLL调用失败:, error);event.sender.send(error, { message: DLL调用失败, details: error.message });}
});渲染进程render.js
const { ipcRenderer } require(electron);const button_test document.getElementById(button_test);
const textBox_result document.getElementById(textBox);button_test.addEventListener(click, () {const a 5;const b 6;ipcRenderer.send(call-test, { a, b });
});ipcRenderer.on(test-result, (event, data) {textBox_result.value test(${data.a}, ${data.b}) ${data.result};
});ipcRenderer.on(error, (event, data) {alert(错误: ${data.message});
});五、其他问题
我在安装过程中遇到了各种各样的问题这里记录一下看是否用得到
1. 安装ffi-napi报错。npm install ffi-napi gyp ERR! find VS gyp ERR! find VS msvs_version not set from command line or npm config gyp ERR! find VS running in VS Command Prompt, installation path is: gyp ERR! find VS “C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC” gyp ERR! find VS - will only use this version gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer gyp ERR! find VS looking for Visual Studio 2015 gyp ERR! find VS - not found gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8 gyp ERR! find VS gyp ERR! find VS ************************************************************** gyp ERR! find VS You need to install the latest version of Visual Studio gyp ERR! find VS including the “Desktop development with C” workload. gyp ERR! find VS For more information consult the documentation at: gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows gyp ERR! find VS ************************************************************** gyp ERR! find VS gyp ERR! configure error gyp ERR! stack Error: Could not find any Visual Studio installation to use gyp ERR! stack at VisualStudioFinder.fail (D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47) gyp ERR! stack at D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16 gyp ERR! stack at VisualStudioFinder.findVisualStudio2013 (D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14) gyp ERR! stack at D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14 gyp ERR! stack at D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16 gyp ERR! stack at D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7 gyp ERR! stack at D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16 gyp ERR! stack at ChildProcess.exithandler (child_process.js:390:5) gyp ERR! stack at ChildProcess.emit (events.js:400:28) gyp ERR! stack at maybeClose (internal/child_process.js:1088:16) gyp ERR! System Windows_NT 10.0.19045 gyp ERR! command “D:\soft\nodejs\node.exe” “D:\soft\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js” “rebuild” gyp ERR! cwd D:\DemoCode\electronFFI\node_modules\ffi-napi gyp ERR! node -v v14.21.3 gyp ERR! node-gyp -v v5.1.1 gyp ERR! not ok npm WARN enoent ENOENT: no such file or directory, open ‘D:\DemoCode\electronFFI\package.json’ npm WARN electronFFI No description npm WARN electronFFI No repository field. npm WARN electronFFI No README data npm WARN electronFFI No license field. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! ffi-napi4.0.3 install: node-gyp-build npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the ffi-napi4.0.3 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\weidongcao\AppData\Roaming\npm-cache_logs\2025-02-11T07_45_19_949Z-debug.log 这里是说node-gyp找不到vs build tools,先确认你是否安装了vs build tools如果已经安装了网上搜索会让你配置各种环境变量都没什么用其实就是当前node-gyp版本和vs版本不匹配
2. 编译x86报错’“call”’ 不是内部或外部命令也不是可运行的程序或批处理文件。
这个感觉是32位下的一个bug我目前没有找到解决方案
3. 如果安装失败管理员运行试一下
4. 实在不行就官网拉ffi-napi源码自己编译
源码地址https://github.com/node-ffi-napi/node-ffi-napi 在ffi-napi目录下直接编译
node-gyp clean
node-gyp configure --msvs_version2022
node-gyp build提示安装addon
npm install node-addon-api