2013-04-29 72 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);