使用 QScriptEngine 的问题:必须在 QScriptEngine 之前构造 Q(Core)Application
Issues using QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine
我有一个使用 mainwindow 小部件的 Qt Gui 应用程序。 window class 看起来像这样:
class MainWindow : public QMainWindow
{
Q_OBJECT
...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
//some more code
private:
class2* m_data;
}
在class2中我想使用qscriptengine。简而言之,它看起来像这样:
class2.h:
class class2: public QObject
{
Q_OBJECT
public:
class2(QObject* parent = nullptr);
...
private:
QScriptEngine* m_engine;
}
class2.cpp:
class2::class2(QObject* parent)
:QObject(parent)
{
m_engine = new QScriptEngine(this); //this line fails!!
//some other code
}
还有一个 main.cpp 文件,看起来很典型:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
在初始化 qscript 引擎应用程序时崩溃。调试器将我带到 qscriptengine.cpp,错误 qFatal("QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine");。它还在 ucrtbase.dll 中显示未处理的异常。
令人惊讶的是它在发布配置中工作(但在某处失败),并且在调试配置中启动时失败。认为这可能是相关的。
我做错了什么,我该如何解决?
我确实遇到了将 qtscript 库包含到项目中的问题,但在我看来我已经解决了这些问题。我通过 #pragma comment 和项目属性将 lib 添加到项目中。我应该复制它的 .lib 和 .dll 文件还是类似的文件?..
问题通过重新安装 Qt 并在项目中的附加依赖项中包含库来解决,而不是通过 pragma 注释。
我有一个使用 mainwindow 小部件的 Qt Gui 应用程序。 window class 看起来像这样:
class MainWindow : public QMainWindow
{
Q_OBJECT
...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
//some more code
private:
class2* m_data;
}
在class2中我想使用qscriptengine。简而言之,它看起来像这样:
class2.h:
class class2: public QObject
{
Q_OBJECT
public:
class2(QObject* parent = nullptr);
...
private:
QScriptEngine* m_engine;
}
class2.cpp:
class2::class2(QObject* parent)
:QObject(parent)
{
m_engine = new QScriptEngine(this); //this line fails!!
//some other code
}
还有一个 main.cpp 文件,看起来很典型:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
在初始化 qscript 引擎应用程序时崩溃。调试器将我带到 qscriptengine.cpp,错误 qFatal("QScriptEngine: Must construct a Q(Core)Application before a QScriptEngine");。它还在 ucrtbase.dll 中显示未处理的异常。 令人惊讶的是它在发布配置中工作(但在某处失败),并且在调试配置中启动时失败。认为这可能是相关的。 我做错了什么,我该如何解决? 我确实遇到了将 qtscript 库包含到项目中的问题,但在我看来我已经解决了这些问题。我通过 #pragma comment 和项目属性将 lib 添加到项目中。我应该复制它的 .lib 和 .dll 文件还是类似的文件?..
问题通过重新安装 Qt 并在项目中的附加依赖项中包含库来解决,而不是通过 pragma 注释。