我试图从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