QtScript: сбой в 64-битных окнах

Я скомпилировал Qt для 64-битной архитектуры под Windows, и все работает нормально, кроме QtScript. Следующий простой код, прекрасно работающий с 32-битным Qt для 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();
  }
}

1 ответ

Решение

Сбой происходит внутри JavaScriptCore, который является сторонним компонентом из проекта WebKit ( http://webkit.org/projects/javascript/index.html):

Visual Studio сообщает, что происходит сбой в строке 641 файла c:\Qt\4.6.1\src\3rdparty\javascriptcore\JavaScriptCore\runtime\JSObject.h и останавливается при вызове JSCell::getOwnPropertySlot (JSCell.cpp:126). Трассировка стека:

QtScriptd4.dll!QTJSC::JSValue:: получить
QtScriptd4.dll!QTJSC::JSValue:: получить
QtScriptd4.dll! QTJSC:: Переводчик:: privateExecute
QtScriptd4.dll! QTJSC:: Переводчик:: Execute
QtScriptd4.dll! QTJSC:: Функция JsFunction:: вызов
QtScriptd4.dll! QTJSC:: вызов
QtScriptd4.dll!QScriptValue:: вызов
test.exe! главная

Существует множество предупреждений о возможных 64-разрядных проблемах при создании компонента WebKit в Windows с использованием компилятора Visual C++, поэтому я подозреваю, что это не конфигурация, которая поддерживается или была отлажена.

Я обновил отчет об ошибке QT QTBUG-7344.

Другие вопросы по тегам