I am looking to embed v8 and have a module available that exports a function that calls into c++ code. For example, let's assume I have something like the following in main.js:
import {foo} from 'FooBar';
foo();
Is there a way to have foo call into native c++ code? Looking for a push in the right direction, thanks in advance!
If you're a very up-to-date version of V8, there a new subclass of Module called SyntheticModule which will let you create a virtual module where you can just directly set the exports.
Local<Function> foo_func = ...;
Local<Module> module = Module::CreateSyntheticModule(
isolate, name,
{String::NewFromUtf8(isolate, "foo")},
[](Local<Context> context, Local<Module> module) {
module->SetSyntheticModuleExport(String::NewFromUtf8(isolate, "foo"), foo_func);
});
// link `module` just like a normal source-text module.