我应该如何使用 v8::SetNativesDataBlob?

How am I expected to use v8::SetNativesDataBlob?

调查我的代码中的段错误,在 V8 source code 中查找 GetBuiltinsCount 导致我看到此评论:

/**
 * NativesStore stores the 'native' (builtin) JS libraries.
 *
 * NativesStore needs to be initialized before using V8, usually by the
 * embedder calling v8::SetNativesDataBlob, which calls SetNativesFromFile
 * below.
 */

嵌入器应该如何使用 v8::SetNativesDataBlob

d8 interpreter确实调用了这个方法,但完全不清楚它在做什么以及为什么。 基本示例不调用此方法。

一年多后,我发现自己又回到了这个问题上,现在我知道了答案。

您可以使用或不使用外部启动数据 ("snapshot") 来编译 V8。

如果您使用 快照数据编译 ,请调用 V8::InitializeExternalStartupData,如 Hello World example code 中所示。您不直接调用 v8::SetNativesDataBlob

否则,解决方案是编译没有快照数据。然后,您根本不需要调用上述任何一个函数。这是构建过程中 的一个答案。请注意,使用快照数据会减少进程启动时间。