Javascript 如何集成定制C++;将模块转换为自定义版本的NodeJS?

Javascript 如何集成定制C++;将模块转换为自定义版本的NodeJS?,javascript,c++,node.js,v8,embedded-v8,Javascript,C++,Node.js,V8,Embedded V8,我希望创建一个使用NodeJS运行特定JavaScript文件的可执行文件。但是,这个NodeJS应该有附加的“模块”,它使用C++代码>将 > /< 到目前为止,我已经成功地编译了NoDEJS到一个库,并将它与我的超级简单C++程序连接: #包括 #包括“node.h” int main(int argc,char*argv[]){ std::向量newArgs; newArgs.push_back(argv[0]); char file[]=“my_file.js”; newArgs.pus

我希望创建一个使用NodeJS运行特定JavaScript文件的可执行文件。但是,这个NodeJS应该有附加的“模块”,它使用C++代码>将 > /<

到目前为止,我已经成功地编译了NoDEJS到一个库,并将它与我的超级简单C++程序连接:

#包括
#包括“node.h”
int main(int argc,char*argv[]){
std::向量newArgs;
newArgs.push_back(argv[0]);
char file[]=“my_file.js”;
newArgs.push_back(文件);
返回节点::Start(2,&newArgs[0]);
}
正如您所知,这只是在可执行文件的同一目录中执行名为“my_file.js”的JavaScript文件

现在的问题是,我如何将我在这个代码中创建的潜在C++类/函数暴露给JavaScript?


例如,我想这样做:

#包括
#包括
#包括“node.h”
班级天气{
公众:
天气({}
void makeItRain(){

std::cout您所询问的内容被称为“插件”,这里有很多官方文档:

它不像你的问题中的假设代码那么简单,但是基本原理是一样的。需要更多的代码来桥接C++和JavaScript的世界(记住其中一个是垃圾收集,另一个是手动内存管理;一个是提前编译,另一个是作为源来发送)。

注意“N-API”的一节。默认情况下,你将针对V8的C++ API进行编程,有时会在版本之间发生变化。为了使你的插件与尽可能多的No/V8版本兼容,N-API提供了一个抽象层,该层被设计成稳定的。

// my_file.js
var Weather = require("weather");
var w = new Weather();
w.makeItRain();