2013-04-29 1 views
-1

J'essaie de comprendre comment transmettre des données entre une bibliothèque C et un module NodeJS. Serais-je capable de le faire via le module NodeFFI? Ou devrais-je écrire mon propre addon NodeJS pour développer une interface C-NodeJS?Interface NodeJS-C

Répondre

4

Les états de documentation node-ffi:

node-ffi est un addon Node.js pour le chargement et appeler les bibliothèques dynamiques à l'aide pure JavaScript. Il peut être utilisé pour créer des liaisons à des bibliothèques natives sans écrire de code C++.

Vous avez juste besoin d'accéder aux bibliothèques comme indiqué dans node-ffi et les résultats de passe ailleurs. Dans leur source, ils ont un exemple. En supposant qu'ils sont dans le même répertoire:

fichier factorial.c:

#include <stdint.h> 

uint64_t factorial(int max) { 
    int i = max; 
    uint64_t result = 1; 

    while (i >= 2) { 
    result *= i--; 
    } 

    return result; 
} 

fichier factorial.js:

//load the ffi module 
var ffi = require('ffi'); 

//include the function 
var libfactorial = ffi.Library('./libfactorial', { 
    'factorial': [ 'uint64', [ 'int' ] ] 
}); 

if (process.argv.length < 3) { 
    console.log('Arguments: ' + process.argv[0] + ' ' + process.argv[1] + ' <max>'); 
    process.exit(); 
}; 

//usage of the function 
var output = libfactorial.factorial(parseInt(process.argv[2])); 

console.log('Your output: ' + output); 

Utilisation du module, le fichier C est chargé avec ceci:

var libfactorial = ffi.Library('./libfactorial', { 
    'factorial': [ 'uint64', [ 'int' ] ] 
}); 

et ensuite accédé comme ceci:

//process.argv are the command line arguments 
var argument = parseInt(process.argv[2]); 
var output = libfactorial.factorial(argument);