我用c++开发了一个嵌入V8的Windows Service。调试版本运行良好。问题是发布版本根本不起作用。
我使用VisualStudio 2010将V8引擎编译成一个静态库文件。我将服务的调试版本与V8的调试库链接起来,将服务的发布版本与V8的发布库链接起来。
发布版本在程序的第一行给出分段故障,即HandleScope v8Scope;
。(我实例化了v8引擎的局部作用域)。
不幸的是,我不能调试,因为我运行发布版本,我看不出是什么问题,因为在调试版本运行正常。
我不明白为什么我收到段故障,当我试图实例化范围。
你对我如何处理这种情况有什么建议吗?LaterEdit:
使用下面的代码,我意识到当前的隔离是NULL。所以,现在我的问题是如何创建一个非NULL的隔离上下文。Isolate* isolate = Isolate::GetCurrent();
if (isolate==NULL)
return;
Locker v8Locker;
HandleScope v8Scope(isolate);
谢谢,
如果有人有同样的问题,下面是答案:
由于某些原因,V8引擎似乎没有调用自己的初始化函数。如果你把V8::initialize();
作为程序的第一行,就没问题了。
要创建一个不为NULL的新隔离,您必须调用Isolate *isolate=Isolate::New()