1

我用 C++ 开发了一个嵌入了 V8 的 Windows 服务。调试版本运行良好。问题是发布版本根本不起作用。

我使用 VisualStudio 2010 将 V8 引擎编译成一个静态库文件。我将服务的调试版本与 V8 调试库链接,并将服务的发布版本与 V8 发布库链接。

发布版本在程序的第一行给出 SegmFault,即HandleScope v8Scope;. (我为 v8 引擎实例化了本地范围)。

不幸的是,我无法调试,因为我运行的是发布版本,而且我看不出问题出在哪里,因为在调试版本中运行正常。

当我尝试实例化范围时,我不明白为什么会收到 SegmFault。

你对我如何处理这种情况有什么建议吗?

后来编辑:

使用下面的代码,我意识到当前的 Isolate 是 NULL。所以,现在我的问题是如何创建一个不为 NULL 的 Isolate 上下文。

Isolate* isolate = Isolate::GetCurrent();
if (isolate==NULL)
    return;
Locker v8Locker;
HandleScope v8Scope(isolate);  

谢谢,

4

1 回答 1

1

如果有人有同样的问题,这里是答案:

出于某种原因,V8 引擎似乎没有调用自己的初始化函数。因此,如果您将该行V8::initialize();作为程序的第一行,那就没问题了。

要创建一个不为 NULL 的新 Isolate,您必须调用Isolate *isolate=Isolate::New()

于 2013-06-05T08:10:51.603 回答