我希望嵌入v8并提供一个可用模块,该模块可以导出调用c ++代码的函数。例如,假设我在main.js中有以下内容:
import {foo} from 'FooBar';
foo();
是否可以通过foo调用本机c ++代码?在寻求正确方向的推动,在此先感谢!
答案 0 :(得分:1)
如果您是V8的最新版本,则有一个名为SyntheticModule的Module的新子类,它将使您创建一个虚拟模块,您可以在其中直接设置导出。
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.
答案 1 :(得分:0)