从 nodejs 加载 DlL 时出现错误“动态符号检索错误:Win32 错误 127”

Kyu*_*ubi 6 dll node.js node-ffi

我想从节点 js 加载一个 dll 文件。这是头文件:

#pragma once
#ifdef __cplusplus
#define EXAMPLE __declspec(dllexport) 

extern "C" {
    EXAMPLE int Add(int, int);
}
#endif
Run Code Online (Sandbox Code Playgroud)

在编译为,我选择“编译为 C 代码”

在主动解决方案平台中,我选择 x64

然后,我使用 ffi 模块加载它:

var ffi = require('ffi');

var Lib = ffi.Library('test', {'Add' : ['int',['int','int']]});
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误:

C:\Users\TheHai\node_modules\ffi\lib\dynamic_library.js:112
    throw new Error('Dynamic Symbol Retrieval Error: ' + this.error())
    ^

Error: Dynamic Symbol Retrieval Error: Win32 error 127
    at DynamicLibrary.get (C:\Users\TheHai\node_modules\ffi\lib\dynamic_library.js:112:11)
    at C:\Users\TheHai\node_modules\ffi\lib\library.js:50:19
    at Array.forEach (native)
    at Object.Library (C:\Users\TheHai\node_modules\ffi\lib\library.js:47:28)
    at Object.<anonymous> (C:\Users\TheHai\Downloads\Compressed\nodejs-websocket-master\samples\chat\server.js:8:15)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
Run Code Online (Sandbox Code Playgroud)

小智 1

我也遇到了同样的问题。我不知道这个错误的确切原因。但我更改了以下内容(只需将 DLL 名称从 'test' 更改为 './test')并且它有效。你也尝试一下,让我知道它是否有效。谢谢

var ffi = require('ffi');

var Lib = ffi.Library('./test', {'Add' : ['int',['int','int']]});
Run Code Online (Sandbox Code Playgroud)