【问题标题】:v8::Isolate::New null access violationv8::Isolate::New 空访问冲突
【发布时间】:2016-08-18 10:56:07
【问题描述】:

我使用的是用 Visual Studio 2015 编译的 V8 32 位版本 4.10.253。

我正在尝试运行 Google 在以下位置的示例: Chrome V8 - Getting Started

但是当我尝试运行它时,我得到:

Exception thrown at 0x00000000 in V8Test.exe: 0xC0000005: Access 
violation executing location 0x00000000.

当执行以下操作时,我得到了这个:

Isolate* isolate = Isolate::New(create_params);

我的项目设置:

为了让项目在调试中编译,我将运行时库设置为:

Multi-threaded Debug /MTd.

我将 v8 包含目录包含在其他包含目录下。

最后,我包括以下库:

icuuc.lib icui18n.lib v8_libplatform.lib v8_external_snapshot.lib
v8_base_3.lib v8_base_2.lib v8_base_1.lib v8_base_0.lib v8_libbase.lib
winmm.lib

有人知道我做错了什么吗?提前致谢。

【问题讨论】:

    标签: c++ v8 embedded-v8 libv8


    【解决方案1】:

    好吧,我觉得我很愚蠢。我没有读完教程的其余部分。您必须复制存储可执行文件的所有 .bin 文件。具体来说:

    natives_blob.bin
    snapshot_blob.bin
    

    如果不这样做,V8 将在 Isolate::New 崩溃。

    【讨论】:

    • 这就是我使用 no_snapshot 的原因。它在启动时会慢一点,但您不必处理正确的 bin 文件——这些文件会根据 debug/32 vs 64bit/version of V8/etc 进行更改。更容易等待额外的 0.1 秒左右(当我测量时)并且不再处理它们。只是不要链接 external_snapshot 而是链接 no_snapshot。
    • 不错!感谢您的提示,我将不得不试一试。
    • 另外,如果你不是,请确保你正在开发调试版本(make x64.debug)——它会在崩溃之前提供更好的失败信息。这不是很好,但已经好多了。另外,我认为堆栈跟踪也更好一些。
    • 是的,如果您使用 v8_nosnapshot 链接,您不必担心复制 bin 文件。谢谢!
    • 好吧,我当然希望如此——否则我一直在做一些非常奇怪的事情:)
    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2013-02-26
    • 2015-04-23
    相关资源
    最近更新 更多