我想从node.js javascript中调用一个用“C”DLL编写的函数?

时间:2016-07-01 11:17:26

标签: javascript c node.js electron

我想从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' ] ]
    });

但我收到错误“动态链接错误:Win32错误126”。有人可以帮帮我吗

1 个答案:

答案 0 :(得分:1)

如果找不到指定的模块",则表示您尝试加载的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。