v8::Isolate::Новое нарушение нулевого доступа

Я использую 32-разрядную версию V8 4.10.253, скомпилированную с помощью Visual Studio 2015.

Я пытаюсь запустить пример, который есть у Google: Chrome V8 — Начало работы

Но когда я пытаюсь запустить его, я получаю:

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

Кто-нибудь знает, что я делаю неправильно? Заранее спасибо.


person Someone13    schedule 25.04.2016    source источник


Ответы (1)


Хорошо, я чувствую себя глупо. Я не закончил читать остальную часть учебника. Вы должны скопировать все файлы .bin, в которых хранится исполняемый файл. Конкретно:

natives_blob.bin
snapshot_blob.bin

V8 рухнет на Isolate::New, если вы этого не сделаете.

person Someone13    schedule 25.04.2016
comment
Вот почему я использую no_snapshot. Это НА МИНУТУ медленнее при запуске, но вам не нужно иметь дело с правильными bin-файлами, которые меняются в зависимости от отладки/32 по сравнению с 64-битной/версией V8/и т. д. Легче дождаться дополнительных 0,1 с или около того (когда я измерял) и больше никогда с ними не иметь дело. Просто не связывайте external_snapshot и вместо этого связывайте no_snapshot. - person xaxxon; 01.05.2016
comment
Ницца! Спасибо за подсказку, надо будет попробовать. - person Someone13; 01.05.2016
comment
Кроме того, если вы этого не сделаете, убедитесь, что вы разрабатываете отладочные сборки (создайте x64.debug) - это дает более точную информацию об ошибках до того, как что-то выйдет из строя. Это не здорово, но это немного лучше. Кроме того, я думаю, что трассировка стека даже немного лучше. - person xaxxon; 01.05.2016
comment
Да, если вы связываетесь с v8_nosnapshot, вам не нужно беспокоиться о копировании файлов bin. Спасибо! - person Someone13; 02.05.2016
comment
Ну, я очень на это надеюсь, иначе я все это время делал что-то ОЧЕНЬ странное :) - person xaxxon; 02.05.2016