c++ - 在 V8 中,为什么 Isolate::GetCurrent() 返回 NULL?

标签 c++ ubuntu v8 libv8

我编译了V8在 Ubuntu 上有一个非常简单的 V8 程序,叫做 isolate_test.cc。它基于 Hello World example from Google :

#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 获取当前线程有关。

更新:根据this question我添加了 V8::initialize() 作为程序中的第一个调用,但这并没有解决问题。

最佳答案

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

Isolate* isolate = Isolate::GetCurrent(); // returns NULL
if (!isolate) {
    isolate = Isolate::New();
    isolate->Enter();
}

关于c++ - 在 V8 中,为什么 Isolate::GetCurrent() 返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23825034/

相关文章:

c++ - sqlConnection->Open() 不起作用

regex - 如何删除不是mp3的文件?

javascript - 在 Node 脚本标签内运行 cat ?

linux -/bin/bash^M : bad interpreter: No such file or directory

c++ - 模型观察矩阵 - C++、OpenGL

c++ - 访问结构中定义的枚举的值

c++ - 当我不关心顺序并且没有重复项时,更快的删除删除习惯用法?

javascript - 在没有浏览器的情况下执行 JavaScript?

javascript - 为什么一个函数在满数组时比在空数组时工作得更快

javascript - 行尾无法通过正则表达式删除或 trim Node.JS