记录踩的坑,防止之后忘记html
1. 须要用window电脑
2. npm容易出错,建议使用cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
3. 若是dll是32位的nodejs和electron都要使用对应的版本才可使用,
4. nodejs版本建议9版本如下
复制代码
// 首先安装 node-gyp
1. cnpm install node-gyp -g
// 拉取electron-vue项目
2. vue init simulatedgreg/electron-vue my-project
// 这里我是将electron的版本改为了1.8.2在进行安装,在这个版本测试稳定,其余的没测试
cd my-project cnpm install
复制代码
cnpm install --global --production windows-build-tools
复制代码
1. cnpm install node-ffi
复制代码
分别到 ref和ffi执行下面命令
cd .\node_modules\ref\ 和 cd .\node_modules\ffi\
执行
node-gyp rebuild --arch=ia32 --dist-url=https://atom.io/download/atom-shell --runtime=electron --target=1.8.2
复制代码
--arch=ia32 : ia32表示32位,64位请改为x64,--target=1.8.2 与上面安装的electron版本一致vue
出现 生成代码
字样表示成功node
1. cnpm install -g electron-builder
// 在项目目录下执行
2. electron-builder install-app-deps
复制代码
# Electron 的版本。
set npm config --target=1.8.2
# Electron 的系统架构, 值为 ia32 或者 x64。
set npm config --arch=ia32
# 下载 Electron 的 headers。
set npm config --disturl=https://npm.taobao.org/mirrors/atom/
# 告诉 node-pre-gyp 咱们是在为 Electron 生成模块。
set npm config --runtime=electron
复制代码
const ffi = require('ffi')
const iconv = require('iconv-lite')
const Dll =new ffi.Library('dll\\fzyktclient.dll', {
// 第一个参数为返回值,第二个参数
add: ['int', ['int','int', 'string']],
})
const resBuffer= Buffer.alloc(1024);
const res=Dll.add(1,2,resBuffer)// 3
// 返回值,0表明成功
if(res===0){
// resBuffer 返回的提示信息
// 解决返回中文乱码问题
const data= const data=iconv.decode(resBuffer, 'GBK');
console.log(data)// 操做成功
}
复制代码
Q:python
error msb4019:未找到导入的项目“C:\Program Files (x86 )\MSBuild\
Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Default.props”
复制代码
A:shell
// 在命令行执行改命令便可,2017 是你当前vs对应的版本,好比你装的是2015版本,就改为2015
npm config set msvs_version 2017
复制代码
Q:npm
Uncaught Error: Dynamic Linking Error: Win32 error 126
复制代码
A:windows
Dll引用的路径不对,检查路径是否书写正确,须要用绝对路径
复制代码
Q:bash
Uncaught Error: Dynamic Linking Error: Win32 error 193
复制代码
A:架构
dll 位数不对应,例如electron/nodejs是32位的dll是64位的
复制代码
Q:app
Uncaught Error: Dynamic Linking Error: Win32 error 127
复制代码
A:
DLL中没有找到对应名称的函数,须要检查头文件定义的函数名是否与DLL调用时写的函数名是否相同。
Dll错误,检查你的dll文件是否还引用了其余的资源及dll文件
复制代码
Q:
Uncaught Error: Dynamic Linking Error: Win32 error 1114
复制代码
A:
dll初始化失败,通常是在打包成exe文件发生,多是你的dll在打包后的位置不正确,
程序调用不到就会去系统c盘找对应的dll文件
复制代码
Q:
fatail error LNK1127
复制代码
A:
删除用户目录下.node-gyp 从新安装 npm install node-gyp -g
复制代码
Q:
调用dll中文乱码问题
复制代码
A:
// 安装iconv-lite
1.cnpm install iconv-lite -D
2.let iconv = require('iconv-lite')
3.iconv.decode(obj, 'GBK') // 解码成utf8.
复制代码
Q:
打包成exe时出现
The process cannot access the file because it is being used by another process
复制代码
A:
缘由是程序被占用,删掉build李敏啊除icons外的文件,从新执行编译,若是还不是,则关闭编辑工具
好比vscode也会占用,而后在命令行从新编译便可
复制代码
Q:
npm run build 下载包失败
复制代码
A: