我想调用一个用"C"DLL从node.js javascript

I want to call a function which is written in "C" DLL from node.js javascript?

本文关键字:quot DLL javascript js node 调用 一个      更新时间:2023-09-26

我想从node.js javascript调用一个用"C" DLL编写的函数。我在node.js和electron中使用"ffi"模块。我想调用的函数是"int FDColor_GetSWVersion(char* softwareVersion)"。我使用下面的代码:

 var libm = ffi.Library(__dirname + "''viewmodels''FDColor.dll", {
      'FDColor_GetSWVersion': [ 'int', ['string' ] ]
    });

但我得到错误"动态链接错误:Win32错误126"。有人能帮我一下吗

当你得到"指定的模块无法找到"时,这是指你试图加载的DLL或它的任何依赖项。

你已经给出了ffi.Library函数的完整路径,但是当FDColor.dll加载它的依赖项时,它可能不会使用路径,这导致LoadLibrary首先在进程的当前工作目录中查找,然后在path环境变量的目录中查找。

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

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

  3. 在命令提示符下设置PATH后,您可以通过重复步骤1来检查是否正确执行了此操作。DependencyWalker现在将显示它可以找到这些dll。