1

我正在使用节点 ffi 模块来调用我自己的 dll 中的本机 Windows 函数。我的 dll 依赖于同一目录中的其他一些第三方 dll。

问题是加载后调用时引用我的dll

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

它无法找到 myLibrary 依赖的第三方 dll,尽管它们位于同一目录中。我试图通过执行以下操作在此行之前调用 setDllDirectory:

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

然后调用 setdl。但是我在上面的 setdl 行中遇到错误:

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

我怎样才能解决这个问题?

4

1 回答 1

4

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

该函数有两个版本SetDllDirectory()

  • SetDllDirectoryA对于 ANSI。
  • SetDllDirectoryW对于 Unicode。

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

此信息在文档中说明:

图片

于 2017-01-26T08:45:25.260 回答