4

我已经在 windows 下为 64 位架构编译了 Qt,除了 QtScript 之外一切正常。以下简单代码在 32 位Qt for Windows中完美运行,如果使用 64 位 Qt 编译,则会崩溃。也许这是我的代码中的错误?还是Qt不兼容64位?或者是其他东西?欢迎任何意见。

#include <QtCore/QCoreApplication>
#include <QScriptEngine>
int main(int argc, char *argv[])
{
  QCoreApplication app( argc, argv);
  QScriptEngine oEngine;
  oEngine.evaluate( "function foo(){var a=[[0]]; a[0][0];}" );
  for(;;)
  {
    oEngine.evaluate( "foo" ).call();
  }
}
4

1 回答 1

3

崩溃发生在 JavaScriptCore 内部,它是 WebKit 项目的第 3 方组件(http://webkit.org/projects/javascript/index.html):

Visual Studio 报告崩溃发生在 c:\Qt\4.6.1\src\3rdparty\javascriptcore\JavaScriptCore\runtime\JSObject.h 的第 641 行,并在调用 JSCell::getOwnPropertySlot (JSCell.cpp: 126)。堆栈跟踪是:

QtScriptd4.dll!QTJSC::JSValue::get
QtScriptd4.dll!QTJSC::JSValue::get
QtScriptd4.dll!QTJSC::Interpreter::privateExecute
QtScriptd4.dll!QTJSC::Interpreter::执行
QtScriptd4.dll!QTJSC: :JSFunction::call
QtScriptd4.dll!QTJSC::call
QtScriptd4.dll!QScriptValue::call
test.exe!main

在使用 Visual C++ 编译器在 Windows 上构建 WebKit 组件时,有很多关于可能的 64 位问题的警告,所以我怀疑它不是受支持或尚未调试的配置。

我已经更新了 QT 错误报告QTBUG-7344

于 2010-01-27T16:42:24.727 回答