我想从 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 环境变量的目录中。

所以,

  1. 在 FDColor.dll 上使用 DependencyWalker (http://www.dependencywalker.com/) 查看它是否有任何依赖项。最好的方法是从调用此脚本的相同位置调用它(提供传递给 ffi.Library 的相同路径)。

  2. 对于每个它会尝试加载但未找到的 DLL,您需要将文件夹添加到调用此脚本的环境的 PATH 环境变量中。

  3. 您可以通过在命令提示符下设置 PATH 后重复步骤 1 来检查您是否已正确完成此操作。 DependencyWalker 现在将显示它可以找到那些 DLL。