node-dll 调用
DLL介绍
DLL(Dynamic Link Library)文件为动态链接库文件,又称”应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
Node 怎么调用DLL
使用 node-ffi 模块,非常灵活的node中去调用dll中暴露的方法。
安装node-ffi模块
安装命令 npm install ffi
** 在安装node-ffi模块前,必须保证node-gyp 安装成功,并且node-gyp可以使用 **
安装node-ffi 遇到的坑
如果安装成功了,就看看我是怎么解决这个坑的吧。
不知道是怎么回事,每次安装ffi模块,都会导致 node-gyp build V8类型出错。
** 解决方法:**
直接克隆node-ffi仓库到本地,把node-ffi 放到全局的 node-modules中。
1 | git clone git://github.com/node-ffi/node-ffi.git |
再进入CMD命令窗口中,执行** npm install node-ffi –g **,即可成功安装。
安装完后,全局的 node-modules中会出现 快捷方式的 ffi文件夹。
需要创建一个ffi文件夹,并把快捷方式的 ffi文件夹内容剪切到 新的 ffi文件夹中,也就是去掉快捷方式即可。
开发DLL
开发DLL工具,我使用的是VS2015。
** 步骤:b**
开发DLL工具,我使用的是VS2015。
打开** VS2015 ** -> ** 文件 ** -> ** 新建 ** -> ** 项目 ** -> ** 选择Win32控制台应用程序 **
选择 ** 下一步 **
选择 ** 控制台应用程序 空项目 ** 最后点击 ** 完成 **
右击** nodeFile ** 项目名称,选择 ** 添加 ** -> ** 新建项 **
选择 ** 头文件 **,名称我写的 ** fileChange.h **点击添加
同理,相同的步骤创建C++文件(.cpp),名称fileChange.cpp 点击添加
在源文件 ** fileChange.cpp ** 中编写代码:
1 | // fileChange.cpp |
在头文件 ** fileChange.h ** 中编写代码:
1 | // fileChange.h |
在这里必须使用,** extern “C” ** 让编译器使用C解析方法去导出DLL,不然node-ffi模块识别不了。
生成DLL
因为我的电脑环境是64位,node也是64位,所以我导出的dll也需要是64位,不然node-ffi也是调用不成功。
** 导出方法: **
导出的dll文件在在项目目录下的 \x64\Debug 中,即可找到 nodeFile.dll动态链接库文件。
node使用DLL
1 | //导入ffi模块 |