2013-04-29 5 views
-1

Я пытаюсь выяснить, как передавать данные между библиотекой C и модулем NodeJS. Могу ли я сделать это через модуль NodeFFI?Интерфейс NodeJS-C

Или мне нужно написать собственный аддон NodeJS для разработки интерфейса C-NodeJS?

ответ

4

В node-ffi документация говорится:

node-ffi является Node.js аддоном для загрузки и вызова динамических библиотек с использованием чистого JavaScript. Его можно использовать для создания привязок к родным библиотекам без написания кода на C++.

Вам просто нужно получить доступ к библиотекам, как указано в node-ffi, и результаты прохода в другом месте. В их источнике есть пример. Если предположить, что они находятся в том же каталоге:

Файл factorial.c:

#include <stdint.h> 

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

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

    return result; 
} 

Файл 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); 

Используя модуль, файл C загружается с этим:

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

, а затем доступ к следующим образом:

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

 Смежные вопросы

  • Нет связанных вопросов^_^