Я хочу создать исполняемый файл, который использует NodeJS для запуска определенного файла JavaScript.Однако в этот NodeJS должны быть добавлены дополнительные «модули», которые открывают классы / функции C ++ для области JavaScript, используя require
.
. До сих пор я успешно скомпилировал NodeJS в библиотеку и связал его с моимсупер простая программа на C ++:
#include <vector>
#include "node.h"
int main(int argc, char* argv[]) {
std::vector<char*> newArgs;
newArgs.push_back(argv[0]);
char file[] = "my_file.js";
newArgs.push_back(file);
return node::Start(2, &newArgs[0]);
}
Как вы можете сказать, это просто выполняет файл JavaScript с именем "my_file.js" в том же каталоге исполняемого файла.
Теперь вопрос в том,Как я могу представить потенциальные классы / функции C ++, которые я создаю в этом коде, JavaScript?
Например, я хотел бы сделать что-то вроде этого:
#include <vector>
#include <iostream>
#include "node.h"
class Weather {
public:
Weather() {}
void makeItRain() {
std::cout << "It is raining\n";
}
};
int main(int argc, char* argv[]) {
std::vector<char*> newArgs;
newArgs.push_back(argv[0]);
char file[] = "my_file.js";
newArgs.push_back(file);
// hypothetical code
node::AddClass(Weather, "weather");
return node::Start(2, &newArgs[0]);
}
// my_file.js
var Weather = require("weather");
var w = new Weather();
w.makeItRain();
Есть предложения?Самое близкое, что я нашел, это v8pp , но я не знаю, как получить экземпляр v8 :: Isolate.