最近在研究nodejs和node-webkit,需要在node-webkit应用中调用dll ,折腾了好久,遇到不少麻烦,国内没怎么介绍具体方法,就将这几天的研究成果说明下,希望对后来人有用。
( 图片粘贴不了,我把教程和涉及到的软件都上传到下面的链接去了)
说明:本文档主要说明如何通过nodejs中的ffi和ref模块来调用c的dll文件,并使node-webkit可以调用dll(涉及的软件已全部打包,可以到下面的链接去下载 :http://download.csdn.net/detail/aichikaochang/7000791 )。
1 安装nodejs,在http://nodejs.org/download/上下载32位的.msi文件,直接安装,如下所示(版本号为0.10.26):
将安装后的目录添加的环境变量中,如:D:\Program Files\nodejs (主要目的是使该目录下的node.exe可以在命令行中运行)。
2 安装python2.7版本,并设置环境变量。
3 下载node-webkit压缩文件,版本为0.8.4 。
4 安装node-gyp和nw-gyp ,这个node-gyp将c文件编译成nodejs的包的编译工具,nw-gyp是将c文件编译成node-WebKit的包的编译工具,具体安装方法如下:
进入cmd命令模式,输入npm install node-gyp 即可
再次输入 npm install nw-gyp即可
5 安装ffi和 ref模块,并重新编译成node-webkit可用的包,具体如下:
在命令行模式中输入:
npm install ffi
npm installref
这样会在本用户目录下生成node_modules文件夹,里面内容如下:
命令行模式进入到此目录下
下面通过nw-gyp来将ffi和ref模块重新编译。
由于ffi中包含ref模块,所以要先将ffi模块中的ref先编译,然后再将ffi编译,如下:
注意:编译命令一定要在含有package.json文件的目录下运行,命令后的—target=0.8.4是针对node-webkit的版本的,如果不是这个版本,需要改成自己的版本。最后将ref模块编译下即可。
6 编辑项目的package.json文件,此文件主要是node-webkit调用你的应用的配置文件,需要在里面添加
"webkit": {
"plugin": true
} 此选项说明你的应用需要调用第三方包,也就是node_modules/ 目录下的ffi和ref包,一个例子如下:
7下面通过一个例子来说明如何在js中调用dll :
具体ref模块怎么用,可以参考这个 http://tootallnate.github.io/ref/#exports-refType
8 最后将你的应用包括node_modules和你需要调用的dll一起压缩打包,压缩方式必须是z7(通过好压或其他压缩软件,只要后缀名是.zip的应该都可以),压缩后的文件后缀名必须是.nw,然后将该文件拷贝到node-webkit的目录下,拖进nw.exe即可执行。
9 注意: 由于ffi模块是为C语言的dll包服务的,所以你自己编写的dll必须要有 extern “C” 来修饰 。