Create a node.js native extension on Windows

前端 未结 2 526
生来不讨喜
生来不讨喜 2020-12-04 13:01

I\'m trying to access a particular native Windows API call from within a node.js application. I believe that the best way to do this is to create a native extension / addon

相关标签:
2条回答
  • 2020-12-04 13:14

    This is now out of date. Today, use nan and node-gyp to write and build native modules that work across platforms.


    I've gone through this pain myself. Here's a guide that helped me get it working. (PDF) Remember that since Node is now officially supported on Windows, Visual Studio is the recommended build tool for Node on Windows.

    Basically:

    • Download and build the Node source code. (See PDF)
    • Create a new VC++ Win32 solution in VS, selecting DLL as the application type in the wizard that follows. Make sure ATL/MFC is unchecked.
    • Write your addon. As an example, here's one I wrote that gets Windows' current DNS settings. Specifically, the project's settings file (vcxproj) will be of interest since one of the toughest parts is getting all the library references/include paths set up. You might want to borrow my config and replace D:\node\ with the location of your Node repo.
    0 讨论(0)
  • 2020-12-04 13:15

    I think node-ffi will help you. It's simple and it's works.

    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
    );
    
    0 讨论(0)
提交回复
热议问题