安装python2.7,一定要2.7
https://www.python.org/download/releases/2.7/
安装后设置环境变量:在环境变量path中添加C:\Python27 (python路径)
全局安装原生模块编译模块,编译ffi模块时需要用到的
3.7.0版本稳定
cnpm install node-gyp@3.7.0 -g
安装后如何全局找不到模块就设置环境变量,path中添加C:\Users\Administrator\AppData\Roaming\npm
安装ffi
cnpm install ffi --save
导入ffi
const ffi=require("ffi");
调用
var libpath = path.join(__dirname, '/termb.dll');
//注册dll中的接口
//InitComm为dll中的方法名,['int',['int']]第一个int是出参类型,最后一个int所在的数组放的是入参的类型
var testLib = ffi.Library(libpath, {
InitComm:['int',['int']]
});
//调用
const dllRet = testLib.InitComm(1001);
console.log('ret => '+dllRet);
注意:dll如果是32 bit,那么node也要32位
gbk编码问题,如果调用dll返回的结果是string,需要解码
var iconv = require("iconv-lite");
var testLib = ffi.Library(libpath, {
funcName:['int',['string','int']]
});
var buffer= Buffer.alloc(10);
var resultRen=testLib.funcName(buffer,10);
var data=iconv.decode(buffer, 'GBK');
console.log(data);
如果在npm install的时候出现错误“MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本”又或者是“The imported project ....”之类的,一般都是在下载ffi模块的时候出现问题。
解决方法:电脑下载安装visual studio