在Windows上创建node.js本机扩展

时间:2012-03-08 20:36:11

标签: javascript windows node.js native add-on

我正在尝试从node.js应用程序中访问特定的本机Windows API调用。我相信最好的方法是在我的node.js应用程序中创建一个本机扩展/插件到节点,然后从JavaScript调用。

在哪里可以找到有关如何实际编译此类可执行文件的资源?我可以找到有关如何编写它的说明,但所有构建说明似乎都适用于Linux。我很好用mingw编译g ++,我不需要使用Visual Studio。另外,在哪里可以找到编译扩展所需的头文件?

2 个答案:

答案 0 :(得分:26)

我认为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
);

答案 1 :(得分:14)

这已经过时了。今天,使用nannode-gyp编写和构建跨平台工作的本机模块。


我自己也经历过这种痛苦。 Here's a guide that helped me get it working. (PDF)请记住,由于现在Windows上正式支持Node,因此Visual Studio是Windows上Node的推荐构建工具。

基本上:

  • Download并构建Node源代码。 (见PDF)
  • 在VS中创建一个新的VC ++ Win32解决方案,在随后的向导中选择DLL作为应用程序类型。确保未选中ATL / MFC。
  • 写你的插件。例如,here's one I wrote that gets Windows' current DNS settings。具体来说,project's settings file (vcxproj)会引起人们的兴趣,因为其中一个最棘手的部分是设置所有库引用/包含路径。您可能希望借用我的配置并将D:\node\替换为您的Node repo的位置。