Место выполнения нарушения прав доступа 0x0000000000000000 после вызова Isolate :: New ()

Кажется, я не могу понять, как запустить V8. У меня есть такой код:

if (!_V8Initialized)
{
    v8::V8::InitializeICU();

    v8::V8::InitializeExternalStartupData("x86\\"); // (this loads ok, I checked)

    auto platform = v8::platform::CreateDefaultPlatform();
    v8::V8::InitializePlatform(platform);

    v8::V8::Initialize();

    _V8Initialized = true;
}

auto params = Isolate::CreateParams();
params.array_buffer_allocator = ArrayBuffer::Allocator::NewDefaultAllocator();
_Isolate = Isolate::New(params);

Но я получаю такую ​​ошибку:

Исключение с кодом 0x0000000000000000 в V8.Net.Console.exe: 0xC0000005: место выполнения нарушения прав доступа 0x0000000000000000.

v8_libbase.dll! v8 :: base :: OS :: Abort () Строка 832 C ++ v8_libbase.dll! V8_Fatal (const char * file, int line, const char * format, ...) Строка 74 C ++ v8.dll! v8 :: internal :: SnapshotData :: SnapshotData (const v8 :: internal :: Vector snapshot) Строка 28 C ++ v8.dll! v8 :: internal :: Snapshot :: Initialize (v8 :: internal :: Isolate * isolate) Строка 43 C ++ v8.dll! V8 :: Isolate :: New (const v8 :: Isolate :: CreateParams & params) Строка 8237 C ++ V8_Net_Proxy_x64.dll! V8EngineProxy :: V8EngineProxy (bool enableDebugging, void () () debugMessageDispatcher, int debugPort) Строка 89 C ++ V8_Net_Proxy_x64.dll! CreateV8EngineProxy (bool enableDebugging, void () () debugMessageDispatcher, int debugPort) Строка 19 C ++ [Управляемый переход на собственный]
V8.Net.dll! V8.Net. V8Engine.V8Engine () Строка 246 C # V8.Net.Console.exe! V8.Net.Program.Main (string [] args) Строка 31 C # [Переход от собственного к управляемому]
mscoreei.dll! 00007ffdbdd281ad () Неизвестно mscoree .dll! 00007ffdbdd c10ab () Неизвестно kernel32.dll! 00007ffdd3868364 () Неизвестно ntdll.dll! 00007ffdd5ef70d1 () Неизвестно

Кажется, здесь не работает:

explicit SnapshotData(const Vector<const byte> snapshot)
  : SerializedData(const_cast<byte*>(snapshot.begin()), snapshot.length()) {
    CHECK(IsSane()); <-- THIS FAILS
}

Я следил за исходным кодом здесь (по большей части): https://chromium.googlesource.com/v8/v8/+/branch-heads/4.8/samples/hello-world.cc

... но я не уверен, почему мне кажется, что я получаю нулевую ошибку. Я, должно быть, что-то упускаю ...


person James Wilkins    schedule 04.04.2017    source источник


Ответы (1)


Неважно, я всегда, кажется, выясняю вещи ПОСЛЕ публикации в ТАК, лол. Оказывается, я загружался из каталога x86, а не из каталога x64 (о чем я должен был догадаться, учитывая V8_Net_Proxy_x64.dll! Lol).

Я собирался удалить вопрос, но все равно оставлю его здесь, на случай, если кто-то еще попадет в него посреди ночи в полусне. ;)

person James Wilkins    schedule 04.04.2017