2

我已经在 Ubuntu 上编译了V8,并且有一个非常简单的 V8 程序,叫做isolate_test.cc。它基于Google 的 Hello World 示例

#include <v8.h> 
using namespace v8;

int main(int argc, char* argv[]) {

    V8::initialize();
    Isolate* isolate = Isolate::GetCurrent(); //Always returns NULL

    return 0; 
}

我用来编译这个程序的命令是:

g++ -Iinclude -g isolate_test.cc -o isolate_test -Wl,--start-group out/x64.debug/obj.target/{tools/gyp/libv8_{base,snapshot},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -lpthread

问题Isolate::GetCurrent()总是退货NULL。为什么会发生这种情况,获取电流的正确方法是Isolate什么?

我可能会偏离轨道,但我的第一个想法是这与Isolate::GetCurrent()无法从libpthread.

更新:根据这个问题,我已将其添加V8::initialize()为程序中的第一个调用,但这并不能解决问题。

4

2 回答 2

3

我有同样的问题。我真的不知道根本原因,但这里的 NULL 意味着没有创建和输入默认隔离。明显的解决方法是手动完成

Isolate* isolate = Isolate::GetCurrent(); // returns NULL
if (!isolate) {
    isolate = Isolate::New();
    isolate->Enter();
}
于 2014-06-23T13:08:26.090 回答
2

默认隔离已从 v8 中删除。因此,GetCurrent()默认情况下不再初始化。

这是更改的问题:https ://code.google.com/p/chromium/issues/detail?id=359977

于 2015-11-17T21:19:40.250 回答