gpt4 book ai didi

c - NodeJS-C 接口(interface)

转载 作者:行者123 更新时间:2023-11-30 18:32:10 25 4
gpt4 key购买 nike

我试图弄清楚如何在 C 库和 NodeJS 模块之间传递数据。我可以通过 NodeFFI 模块执行此操作吗?

或者我必须编写自己的 NodeJS 插件来开发 C-NodeJS 接口(interface)吗?

最佳答案

node-ffi 文档指出:

node-ffi is a Node.js addon for loading and calling dynamic libraries using pure JavaScript. It can be used to create bindings to native libraries without writing any C++ code.

您只需要访问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);

关于c - NodeJS-C 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com