Установил статический QT по видео.
Установил QWT по видео.
В файле C:\qwt-6.1.3\qwtconfig.pri закоменчена строка:
######################################################################
# Build the static/shared libraries.
# If QwtDll is enabled, a shared library is built, otherwise
# it will be a static library.
######################################################################
#QWT_CONFIG += QwtDll
Создаю маленький проект(код ниже). Динамически все собирается и запускается. Статически собирается, но вылетает ошибка:
QWidget: Must construct a QApplication before a QWidget
Путь к статик Qt: C:\Qt\Static5111\5.11.1_Static
Путь к Qwt: C:\qwt-6.1.3
Проект:
qwtTemp.pro
QT += core gui widgets
TARGET = qwtTemp
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
SOURCES += \
main.cpp \
widget.cpp
HEADERS += \
widget.h
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
CONFIG += qwt
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <qwt_plot.h>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
QwtPlot *p;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
p = new QwtPlot();
}
Widget::~Widget()
{
delete p;
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
w.p->show();
return a.exec();
}
Обычная сборка "Отладка"
Обычная сборка "Выпуск"
Статическая сборка "Отладка"
Статическая сборка "Выпуск"
QWidget: Must construct a QApplication before a QWidget
09:37:22: C:/Users/User_ggsk_1/Documents/build-qwtTemp-Desktop_QtStatic_5_11_1_MinGW_32bit-Release/release/qwtTemp завершился с кодом 3
Вероятнее всего эта проблема инициирована различными условиями компиляции библиотеки и самой программы. Библиотеки так же надо компилировать в режиме отладки, если приложение собираеться в debug режиме. Несоблюдение этого соглашения обычно приводит к неопределенному поведению.
Собирайте библиотеки сразу в двух видах, отладочный и режим релиза, если это можно так назвать, без debug символов.
Так же, библиотеки в отладочном режиме обычно отличаются по имени от релиза, например:
суффикс d
присутствует в сборке с режимом отладки. Соответственно надо менять привязки библиотек в MSVC, на нужное имя в зависимости от сборки.
Или использовать pragma
в коде для автоматического выбора библиотек, например:
#if defined __DEBUG__
#pragma comment (lib, "QGLViewerd2.lib")
#else
#pragma comment (lib, "QGLViewer2.lib")
#endif
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возможно неправильно что-то сделал с вектором структур, первый раз с таким работаю`Помогите пожалуйста, если знаете в чём дело)
Улитка ползет по вертикальному шесту высотой H метров, поднимаясь за день на A метров, а за ночь спускаясь на B метровНа какой день улитка доползет...
Есть ли что-то "опасное" в том, что два потока будут одновременно инкрементировать одну переменную? Я имею ввиду, может ли произойти такое,...