您现在的位置是:首页 >学无止境 >electron-egg 打包win7系统桌面exe程序遇坑记录网站首页学无止境

electron-egg 打包win7系统桌面exe程序遇坑记录

tang丶有年 2023-05-31 20:00:02
简介electron-egg 打包win7系统桌面exe程序遇坑记录

electron-egg 打包win7系统桌面exe程序遇坑记录

electron-egg文档

准备环境

注意:项目安装目录一定不要有中文

  • 安装 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 相关使用网上一大堆教程。

使用中遇到的问题总结如下:

  1. Uncaught Error: Dynamic Linking Error: Win32 error 126
  • 该报错是由于dll文件位置不对引起的,文件路径是否和上面一样,否则您需要使用绝对路径。

  • 如果调用的时候还是报错,在代码中设置环境变量,process.env.PATH = ${process.env.PATH}${path.delimiter}${当前文件dll的绝对路径}

  1. Uncaught Error: Dynamic Linking Error: Win32 error 193
  • dll位数不对导致的,32位dll只能给32位程序使用,64位只能给64位程序使用,二者不可混合使用,检测下dll位数和node位数。
  1. Uncaught Error: Dynamic Linking Error: Win32 error 127
  • 该报错是由于在js中声明了c++中没有的方法导致的,请注意c++中暴漏的函数名(使用dumpbin可以查看dll文件信息)
  • 或者是当前dll引用了其他资源文件它没有加载成功(把dll文件引用的其他文件放在同级目录下)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。