调查我的代码中的段错误,在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确实调用了这种方法,但它根本不清楚它在做什么以及为什么这样做。 基本样本不会调用此方法。
答案 0 :(得分:0)
一年多后,我发现自己回到了这个问题,现在我知道了答案。
您可以使用外部启动数据(“快照”)或不使用外部启动数据编译V8。
如果使用快照数据编译,请按Hello World example code中所示调用V8::InitializeExternalStartupData
。您不直接致电v8::SetNativesDataBlob
。
否则,解决方案是编译而不使用快照数据。然后,您根本不需要调用上述任何一个函数。这是构建过程中how to configure this的一个答案。请注意,使用快照数据可缩短流程启动时间。