我想从 node.js javascript 调用一个用 "C" DLL 编写的函数?
I want to call a function which is written in "C" DLL from node.js javascript?
我想从 node.js javascript 调用一个用 "C" DLL 编写的函数。我在 node.js 和电子中使用 "ffi" 模块。我要调用的函数是"int FDColor_GetSWVersion(char* softwareVersion)"。我正在使用以下代码:
var libm = ffi.Library(__dirname + "\viewmodels\FDColor.dll", {
'FDColor_GetSWVersion': [ 'int', ['string' ] ]
});
但我收到错误 "Dynamic Linking Error: Win32 error 126"。谁能帮帮我
当您得到 "the specified module cannot be found" 时,这是指您尝试加载的 DLL 或其任何依赖项。
您已经为 ffi.Library
函数提供了完整路径,但是当 FDColor.dll 加载其依赖项时,它可能不会使用任何路径,这会导致 LoadLibrary 首先在当前工作目录中查找然后在 PATH 环境变量的目录中。
所以,
在 FDColor.dll 上使用 DependencyWalker (http://www.dependencywalker.com/) 查看它是否有任何依赖项。最好的方法是从调用此脚本的相同位置调用它(提供传递给 ffi.Library 的相同路径)。
对于每个它会尝试加载但未找到的 DLL,您需要将文件夹添加到调用此脚本的环境的 PATH 环境变量中。
您可以通过在命令提示符下设置 PATH 后重复步骤 1 来检查您是否已正确完成此操作。 DependencyWalker 现在将显示它可以找到那些 DLL。
我想从 node.js javascript 调用一个用 "C" DLL 编写的函数。我在 node.js 和电子中使用 "ffi" 模块。我要调用的函数是"int FDColor_GetSWVersion(char* softwareVersion)"。我正在使用以下代码:
var libm = ffi.Library(__dirname + "\viewmodels\FDColor.dll", {
'FDColor_GetSWVersion': [ 'int', ['string' ] ]
});
但我收到错误 "Dynamic Linking Error: Win32 error 126"。谁能帮帮我
当您得到 "the specified module cannot be found" 时,这是指您尝试加载的 DLL 或其任何依赖项。
您已经为 ffi.Library
函数提供了完整路径,但是当 FDColor.dll 加载其依赖项时,它可能不会使用任何路径,这会导致 LoadLibrary 首先在当前工作目录中查找然后在 PATH 环境变量的目录中。
所以,
在 FDColor.dll 上使用 DependencyWalker (http://www.dependencywalker.com/) 查看它是否有任何依赖项。最好的方法是从调用此脚本的相同位置调用它(提供传递给 ffi.Library 的相同路径)。
对于每个它会尝试加载但未找到的 DLL,您需要将文件夹添加到调用此脚本的环境的 PATH 环境变量中。
您可以通过在命令提示符下设置 PATH 后重复步骤 1 来检查您是否已正确完成此操作。 DependencyWalker 现在将显示它可以找到那些 DLL。