electron-egg 打包win7系统桌面exe程序遇坑记录
准备环境
注意:项目安装目录一定不要有中文
- 安装 visualStudio2017 下载C++相关插件
- 安装 python3 的版本 (确保环境变量设置)
因dll文件是32位:
- 安装 node@v12.18.3 32位版本
- 在项目中通过npm 单独安装:
electron@11.5.0 32位版本
electron-builder: 22.10.5
electron-rebuild: 3.2.5
我这不需要构建sqlite,所以删除了electron-egg相关依赖
调用dll文件
# 编译工具
npm i -g node-gyp
# C++构建工具
1. 管理员模式打开PowerShell
2. npm --vs2017 i -g --production windows-build-tools
或者 npm i -g --production windows-build-tools
# 外部接口调用库
1. npm install ref-napi // 基本类型
2. npm install ref-array-napi // 数组类型
3. npm install ref-struct-napi // 结构体类型
4. npm install ffi-napi // 连接c代码和js代码
# 编译 ref-napi 库
1. cd ./node_modules/ref-napi
2. node-gyp configure // 配置
3. node-gyp build // 编译
ffi-napi
相关使用网上一大堆教程。
使用中遇到的问题总结如下:
Uncaught Error: Dynamic Linking Error: Win32 error 126
-
该报错是由于dll文件位置不对引起的,文件路径是否和上面一样,否则您需要使用绝对路径。
-
如果调用的时候还是报错,在代码中设置环境变量,
process.env.PATH =
${process.env.PATH}${path.delimiter}${当前文件dll的绝对路径}
Uncaught Error: Dynamic Linking Error: Win32 error 193
- dll位数不对导致的,32位dll只能给32位程序使用,64位只能给64位程序使用,二者不可混合使用,检测下dll位数和node位数。
Uncaught Error: Dynamic Linking Error: Win32 error 127
- 该报错是由于在js中声明了c++中没有的方法导致的,请注意c++中暴漏的函数名(使用dumpbin可以查看dll文件信息)
- 或者是当前dll引用了其他资源文件它没有加载成功(把dll文件引用的其他文件放在同级目录下)