在node-webkit中使用ffi报错的问题
一般情况下我们需要用到调试工具debug;我们到官网下载可以用于调试的版本http://nwjs.io/
下载之后解压等造作参考之前的文章;然后在代码中添加
var gui = require('nw.gui');
var win = gui.Window.get();
win.showDevTools();
就可以打开调试窗口
接下来是我们使用ffi的时候除了一点儿错
在项目中安装ffi
npm install ffi
在index.html中的js代码中添加
var FFI = require('ffi');
function TEXT(text){
return new Buffer(text, 'ucs2').toString('binary');
}
var user32 = new FFI.Library('user32', {
'MessageBoxW': [
'int32', [ 'int32', 'string', 'string', 'int32' ]
]
});
var OK_or_Cancel = user32.MessageBoxW(
0, TEXT('I am Node.JS!'), TEXT('Hello, World!'), 1
);
添加了这些代码的时候报错,信息大致是在binding.js中加载动态库失败
3818:0701/012531:INFO:CONSOLE(83)] “Uncaught Error: /tmp/.org.chromium.Chromium.zU7siC/node_modules/ref/build/Release/binding.node: undefined symbol: _ZN2v82V817IsGlobalNearDeathEPPNS_8internal6ObjectE”, source: /tmp/.org.chromium.Chromium.zU7siC/node_modules/ref/node_modules/bindings/bindings.js (83)
解决方案是在全局先安装nw-gyp
npm install -g nw-gyp
然后进行下面的操作
进入ffi模块运行下面命令 nw-gyp rebuild --target=0.17.5
进入ref模块运行 nw-gyp rebuild --target=0.17.5
target是你的nw的版本,查看版本可以直接双击nw.exe右下角会有显示;或者你是下的什么版本就是什么版本,比如你到官网看到的是v0.17.5
这里的target就是0.17.5
之后再运行你的项目就可以了