У меня есть приложение Qt Gui, использующее виджет mainwindow. Класс окна выглядит так:
class MainWindow : public QMainWindow
{
Q_OBJECT
...
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
//some more code
private:
class2* m_data;
}
В классе 2 я хочу использовать 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: необходимо создать приложение Q (Core) перед QScriptEngine»); Это также показывает необработанное исключение в ucrtbase.dll.
Удивительно, но он работает в конфигурации выпуска (но где-то не работает) и не запускается при запуске в конфигурации отладки. Думал, что это может быть актуально.
Что я делаю не так и как я могу это исправить?
У меня были проблемы с включением библиотеки qtscript в проект, но мне кажется, что я их решил. Я добавил библиотеку в проект с помощью комментария #pragma и в свойствах проекта. Должен ли я скопировать файлы .lib и .dll или что-то в этом роде? ..
Задача ещё не решена.
Других решений пока нет …