Error: Dynamic Linking Error: Win32 error 193 while binding to Eztwain3.dll library using nodejs ffi
Error: Dynamic Linking Error: Win32 error 193 while binding to Eztwain3.dll library using nodejs ffi
我使用 ffi 成功地将我的 nodejs 绑定到 'TSCLIB.dll',但是当我想将它绑定到 'Eztwain3.dll' 时,我总是有 "Error: Dynamic Linking Error: Win32 error 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' 库?
我通过将 nodejs 从 64 位更改为 32 位来解决我的问题,因为我的 dll 是 32 位
遇到了同样的问题。
使用sigcheck发现dll是32bit的,而node是64bit版本的。
有两种解决方案:
- 把32位的dll替换成64位的,如果你能弄到一个。
- 将节点 64 位替换为 32 位。
我使用 ffi 成功地将我的 nodejs 绑定到 'TSCLIB.dll',但是当我想将它绑定到 'Eztwain3.dll' 时,我总是有 "Error: Dynamic Linking Error: Win32 error 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' 库?
我通过将 nodejs 从 64 位更改为 32 位来解决我的问题,因为我的 dll 是 32 位
遇到了同样的问题。 使用sigcheck发现dll是32bit的,而node是64bit版本的。 有两种解决方案:
- 把32位的dll替换成64位的,如果你能弄到一个。
- 将节点 64 位替换为 32 位。