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

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

但我得到错误“dynamic链接错误:Win32错误126”。 任何人都可以请帮我

当你得到“找不到指定的模块”时,这指的是你试图加载的DLL或其任何依赖关系。

您已经给出了ffi.Library函数的完整path,但是当FDColor.dll加载它的依赖关系时,它可能会使用没有path,这会导致LoadLibrary首先查看进程的当前工作目录,然后在目录PATH环境variables。

所以,

  1. 使用FDColor.dll上的DependencyWalker( http://www.dependencywalker.com/ )查看它是否有任何依赖关系。 最好的方法是从你调用这个脚本的同一个地方调用它(给你传递给ffi.Library的path)。

  2. 对于每个将尝试加载但未find的DLL,都需要将该文件夹添加到调用此脚本的环境的PATH环境variables中。

  3. 您可以通过在命令提示符处设置PATH后重复步骤1来检查您是否做到了这一点。 现在DependencyWalker将显示它可以find这些DLL。