我已经在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();
}
}
答案 0 :(得分:3)
崩溃发生在JavaScriptCore中,这是WebKit项目的第三方组件( 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 ::口译:: privateExecute
QtScriptd4.dll!QTJSC ::口译::执行
QtScriptd4.dll!QTJSC :: JSFunction ::调用
QtScriptd4.dll!QTJSC ::调用
QtScriptd4.dll!QScriptValue ::调用
TEST.EXE!主
在使用Visual C ++编译器在Windows上构建WebKit组件时,有很多关于可能的64位问题的警告,所以我怀疑它不是支持或已经调试过的配置。
我已更新QT错误报告QTBUG-7344。