我用 C++ 开发了一个嵌入了 V8 的 Windows 服务。调试版本运行良好。问题是 Release 版本根本不起作用。
我使用 VisualStudio 2010 将 V8 引擎编译成静态库文件。我将服务的调试版本与 V8 调试库链接在一起,并将服务的发布版本与 V8 发布库链接起来。
Release版本在程序的第一行给出了SegmFault,即HandleScope v8Scope;
。 (我实例化了 v8 引擎的本地范围)。
不幸的是,我无法调试,因为我运行的是发布版本,而且我看不出问题是什么,因为调试版本运行正常。
我不明白为什么在尝试实例化作用域时会收到 SegmFault。
您对我如何处理这种情况有什么建议吗?
后期编辑:
使用以下代码,我意识到当前 Isolate 是 NULL。所以,现在我的问题是如何创建一个非 NULL 的 Isolate 上下文。
Isolate* isolate = Isolate::GetCurrent();
if (isolate==NULL)
return;
Locker v8Locker;
HandleScope v8Scope(isolate);
谢谢,
最佳答案
如果有人有同样的问题,这里是答案:
由于某些原因,V8 引擎似乎没有调用自己的初始化函数。因此,如果您将 V8::initialize();
行作为程序的第一行,就可以了。
要创建一个非 NULL 的新 Isolate,您必须调用 Isolate *isolate=Isolate::New()
关于javascript - Windows 上的 HandleScope 构造函数中的 v8 中的 SegFault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924087/