在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

之后再運行你的項目就可以了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容