Статическая компиляция Qt4 и странные ошибки, происходящие до того, как они должны существовать - PullRequest
2 голосов
/ 25 ноября 2010

Всегда выбирайте заголовок, который рисует программист.

В любом случае я использую linux и скомпилировал библиотеки qt4.7.1 с помощью ./configure -static -nomake demos -nomake examples -nomake tools -prefix/ local / qt / qtstatic

сборка и установка все прошло нормально, и я настроил его в Qt Creator, чтобы я мог строить с ним.Сборка любого приложения работает нормально, однако, когда я запускаю приложение, оно выдает мне ошибку.

QWidget: должен создать QApplication перед QPaintDevice Aborted

Я понимаю, что это означает, что статический объект пытаетсяиспользовать класс (QPaintDevice), для которого сначала нужно вызвать QApplication, и, поскольку все статические объекты обрабатываются до того, как фактическое приложение, это, очевидно, приведет к сбою. Первая строка после моего main () - это QAplication, однако я знаю, чтоне имеет значения, My .pro содержит CONFIGURE + = static, и я определил static в основной программе, Qt4 просто не нравится мне.

Как я могу это исправить, чтобы статические объекты нене все сходят с ума, как это.

#include <QtGui/QApplication>
#include "microbrowse.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    microbrowse w;
    w.show();
    return a.exec();
}

- это главное, но это, вероятно, не важно, главное почти одинаково для всех приложений QT, созданных создателем qt, за исключением того, что microbrowse - это имя любогоВиджет, над которым вы работаете.Микроброузер виджета - это вся программа, все, что он делает, это создает приложение QApplication и микроброузер измерения.

1 Ответ

0 голосов
/ 31 марта 2013

Я думаю, что класс microbrowse содержит такой объект, который невозможно статически связать.Также проверьте свою сборку Qt.Вы должны добавить ./configure -relase или -debug при настройке.

...