使用节点 ffi 调用 setDllDirectory
calling setDllDirectory using node ffi
我正在使用节点 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(…)
我该如何解决这个问题?
错误 127 是 ERROR_PROC_NOT_FOUND
("The specified procedure could not be found")。
SetDllDirectory()
函数有两个版本:
SetDllDirectoryA
用于 ANSI。
SetDllDirectoryW
用于 Unicode。
DLL 不导出实际名为 SetDllDirectory()
的函数,因此出现错误。它导出其他两个函数。
此信息在 documentation:
我正在使用节点 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(…)
我该如何解决这个问题?
错误 127 是 ERROR_PROC_NOT_FOUND
("The specified procedure could not be found")。
SetDllDirectory()
函数有两个版本:
SetDllDirectoryA
用于 ANSI。SetDllDirectoryW
用于 Unicode。
DLL 不导出实际名为 SetDllDirectory()
的函数,因此出现错误。它导出其他两个函数。
此信息在 documentation: