electron 调用 dll 文件方法,和常见问题解决

 

调用dll动态库我这里主要用了以下几个依赖:

"dependencies": {
    "ref-array-napi": "^1.2.0",
    "ref-napi": "^1.4.3",
    "ref-struct-napi": "^1.1.0",
    "ffi-napi": "^2.4.7"
}

注意:dll 是 64位还是 32 位的 ,它和 node 是一致的。
复制代码

我这里用的 window 7 系统的 其他版本的系统应也是差不多的

实现步骤

安装ffi之前需要的环境有4个
  1.  python2.x 这里我用的是2.7版本,(3.x不支持); 安装完成后需要将python设置为环境变量
  2.  .net framework 4.5.1
  3.  visual C++ Build Tools,或者 (vs2015以上(包含15))
  4.  cnpm install --global --production windows-build-tools

1、我这里先将 npm 改为 淘宝镜像 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org

2、首先安装 node-gyp
cnpm install node-gyp -g

3、安装以上依赖
    "ref-array-napi": "^1.2.0",
    "ref-napi": "^1.4.3",
    "ref-struct-napi": "^1.1.0",
    "ffi-napi": "^2.4.7"
    
4、调用方法
    1. const ffi = require("ffi-napi");  // 引入ffi
    // `ffi.Library`用于注册函数,第一个入参为DLL路径,最好为文件绝对路径
    
    2. const libm = ffi.Library("./dll/x64/MTScaleAPI/MTScaleAPI.dll", {
          //ExecuteTaskInFile是dll中定义的函数,两者名称需要一致
          //[a, [b,c....]] a是函数出参类型,[b,c]是dll函数的入参类型
          ExecuteTaskInFile: ['int', ['object']],
          
       });  // 找到dll文件引入

4、完事试试运行
复制代码

问题解决

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文件
posted @ 2022-02-23 10:03  威武的大萝卜  阅读(2349)  评论(1编辑  收藏  举报