dll找不到dll electron_记录 electron-vue 通过node ffi调用dll文件踩的坑

记录踩的坑,防止以后忘记

一些注意点

1. 需要用window电脑

2. npm容易出错,建议使用cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

3. 如果dll是32位的nodejs和electron都要使用对应的版本才可以使用,

4. nodejs版本建议9版本以下

复制代码

拉取electron及依赖安装

// 首先安装 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

复制代码

ffi安装

安装ffi之前需要的环境有4个

python2.x 这里我用的是2.7版本,(3.x不支持); 安装完成以后需要将python设置为环境变量

.net framework 4.5.1

visual C++ Build Tools,或者 (vs2015以上(包含15))

以上三个步骤可以直接执行下面的命令进行安装

cnpm install --global --production windows-build-tools

复制代码

在上面执行成功之后即可安装 node-ffi

1. cnpm install node-ffi

复制代码

编译原生模块(ffi与electron用的v8版本引擎不一致)

方式1:

分别到 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版本一致

出现 生成代码字样表示成功

方式2

1. cnpm install -g electron-builder

// 在项目目录下执行

2. electron-builder install-app-deps

复制代码

在根目录下创建.npmrc

# 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

复制代码

ffi调用

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:

error msb4019:未找到导入的项目“C:\Program Files (x86 )\MSBuild\

Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Default.props”

复制代码

A:

// 在命令行执行改命令即可,2017 是你当前vs对应的版本,比如你装的是2015版本,就改成2015

npm config set msvs_version 2017

复制代码

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 126

复制代码

A:

Dll引用的路径不对,检查路径是否书写正确,需要用绝对路径

复制代码

Q:

Uncaught Error: Dynamic Linking Error: Win32 error 193

复制代码

A:

dll 位数不对应,例如electron/nodejs是32位的dll是64位的

复制代码

Q:

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:

你可能感兴趣的:(dll找不到dll,electron)