使用节点ffi调用setDllDirectory

时间:2017-01-26 08:31:58

标签: winapi node-ffi

我正在使用node ffi模块来调用我自己的dll中的本机窗口函数。我的dll取决于同一目录中的其他第三方dll。

问题是在加载调用时提到我的dll

   var myfunc = ffi.Library("myLibrary", {"test":["string",["string"]]})

虽然myLibrary位于同一目录中,却无法找到myLibrary所依赖的第三方dll。我试图在此行之前调用setDllDirectory:

  var setdl = ffi.Library("kernel32", {'SetDllDirectory':["bool",["string"]]})

然后调用setdl。但是我在setdl行上面出现错误:

 Uncaught Error: Dynamic Symbol Retrieval Error: Win32 error 127(…)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

错误127是ERROR_PROC_NOT_FOUND(“无法找到指定的过程”)。

SetDllDirectory()函数有两个版本:

    ANSI的
  • SetDllDirectoryA
  • SetDllDirectoryW用于Unicode。

DLL不会导出实际名为SetDllDirectory()的函数,因此会出错。它改为输出另外两个函数。

此信息在documentation

中说明

image