错误:动态链接错误:使用nodejs ffi绑定到Eztwain3.dll库时出现Win32错误193

时间:2018-10-29 17:58:24

标签: node.js dll ffi node-ffi

我已经使用ffi成功地将nodejs绑定到了“ TSCLIB.dll”,但是当我想将其绑定到“ Eztwain3.dll”时,总是出现“错误:动态链接错误:Win32错误193”。 >

C:\Users\dev\Desktop\nodeApp>node scan.js
C:\Users\dev\Desktop\nodeApp\node_modules\ffi\lib\dynamic_library.js:74
    throw new Error('Dynamic Linking Error: ' + err)
    ^

Error: Dynamic Linking Error: Win32 error 193
    at new DynamicLibrary (C:\Users\dev\Desktop\nodeApp\node_modules\ffi\lib\dynamic_library.js:74:11)
    at Object.Library (C:\Users\dev\Desktop\nodeApp\node_modules\ffi\lib\library.js:45:12)
    at Object.<anonymous> (C:\Users\dev\Desktop\nodeApp\scan.js:17:24)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)

当我尝试运行此脚本时,将显示上面显示的执行情况。

const ffi = require('ffi');
const ref = require('ref');

    const platform = process.platform;
    var lib = null;

    if (platform === 'win32') {
        lib = 'Eztwain3.dll';
    } else {
        throw new Error('unsupported plateform for lib')
    }

    var instance = ffi.Library(lib, {

    });

https://imgur.com/a/F4rzZDT
https://imgur.com/a/rminDnN

我试图用'TSCLIB.dll'执行相同的脚本,并且运行时没有异常。
那么,如何通过节点ffi调用“ Eztwain3.dll”库?

2 个答案:

答案 0 :(得分:1)

我通过将nodejs从64位更改为32位来解决我的问题,因为我的dll是32位

答案 1 :(得分:0)

遇到同样的问题。 使用sigcheck查找dll是32位,而node是64位版本。 有两种解决方案:

  1. 如果可以的话,用64位的一个替换32位的dll。
  2. 用32位替换64位节点。