我試圖從node.js應用程序中訪問特定的本機Windows API調用。我相信最好的方法是創建一個本地擴展/附加到節點,我可以在我的node.js應用程序中要求並從JavaScript調用。在Windows上創建node.js本機擴展
從哪裏可以找到關於如何實際編譯這類可執行文件的資源?我可以找到有關如何編寫它的說明,但所有的構建說明似乎都適用於Linux。我在mingw上編譯通過g ++很好,我不需要使用Visual Studio。另外,我在哪裏可以找到我需要的頭文件來編譯擴展名?
我試圖從node.js應用程序中訪問特定的本機Windows API調用。我相信最好的方法是創建一個本地擴展/附加到節點,我可以在我的node.js應用程序中要求並從JavaScript調用。在Windows上創建node.js本機擴展
從哪裏可以找到關於如何實際編譯這類可執行文件的資源?我可以找到有關如何編寫它的說明,但所有的構建說明似乎都適用於Linux。我在mingw上編譯通過g ++很好,我不需要使用Visual Studio。另外,我在哪裏可以找到我需要的頭文件來編譯擴展名?
我認爲node-ffi會幫助你。這很簡單,它的作品。
npm install ffi
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
);
這現在已過時。今天,使用nan和node-gyp來編寫和構建跨平臺工作的本地模塊。
我自己經歷過這種痛苦。 Here's a guide that helped me get it working. (PDF)請記住,由於Node現在在Windows上正式受支持,因此Visual Studio是Windows上Node的推薦構建工具。
基本上:
D:\node\
替換爲Node repo的位置。
酷,我以前從來沒見過這個項目。 – 2012-03-08 21:51:37
重要提示:* FFI呼叫存在不平凡的開銷。將strtoul()的硬編碼綁定版本與strtoul()的FFI版本進行比較,可以看出,本地硬編碼綁定比**快5倍**。所以,不要僅僅因爲速度更快而使用函數的C版本。在FFI調用中有很大的代價,所以讓它們值得。*換句話說,偶爾調用本地API是很好的,但如果你打算進行大量的本地調用,那麼你將會必須編寫自己的插件來避免node-ffi的大量開銷。 – josh3736 2012-03-11 21:53:26
爲什麼我會看到中文字符作爲輸出? – 2017-12-15 17:44:53