Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nevero от Июль 05, 2012, 15:45



Название: Проблема запуска Qt приложения
Отправлено: nevero от Июль 05, 2012, 15:45
Здравствуйте.
Помогите пожалуйста с таким вопросом.

Есть приложение, оно состоит из нескольких dll и формы, созданной QtDesigner. Запускаю форму стандартно:
Код:
converter::converter(QWidget* parent, QApplication* app) :
    IView(parent)
{
    ui = new Ui::converter;
    ui->setupUi(this);
}
Где converter - это класс, отвечающий за отображение. Main выглядит следующим образом:
Код:
int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    converter w(0, &a);
    w.show();
    return a.exec();
}
Приложение компилируется (MinGV и Qt 4.8.1 на Windows 7). Но при попытке его запустить вылетает ошибка:
Код:
Программа неожиданно завершилась. С кодом -1073741819
Причем, это касается как релиза, так и дебага. Пробовал добавить точку останова прямо на вызов main, но приложение падает раньше... как так возможно, что ещё происходит до вызова main, что приводит к остановке приложения?
Кстати, ещё при компиляции появляется предупреждение:
Код:
warning: auto-importing has been activated without --enable-auto-import specified on the command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.


Название: Re: Проблема запуска Qt приложения
Отправлено: Bepec от Июль 05, 2012, 15:48
Есть стул. У него 4 ножки и коричневое сиденье.

Не стоит. Ставлю стандартно.

При попытке сесть падаю на пол.

Подскажите в чём проблема?

PS телепаты в отпуске. Код, код, код, код в студию. 


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 05, 2012, 15:54
Это огромный проект, который мне достался по наследству и я не могу приводить его код типа Open Source.
С Qt до этого я не работал и понятия не имел, что там столько проблем - взять рабочий проект и просто скомпилить, запустить оказалось невыполнимо.


Название: Re: Проблема запуска Qt приложения
Отправлено: mutineer от Июль 05, 2012, 15:59
Это огромный проект, который мне достался по наследству и я не могу приводить его код типа Open Source.
С Qt до этого я не работал и понятия не имел, что там столько проблем - взять рабочий проект и просто скомпилить, запустить оказалось невыполнимо.

Проблема не в Qt - она либо в проекте, либо в руках, которые в этом проекте копаются.
А до main может выполняться инициализация статических переменных, в конструкторах которых может прятаться код любой сложности


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 05, 2012, 16:06
Но по факту цепочка вызова очень простая, я забыл сказать только про IView:
Код:
class IView: public QMainWindow
Код:
IView(QWidget* parent) : QMainWindow(parent) {}

Тогда сам класс конвертер объявлен как:
Код:
class converter : public IView

То есть все вызовы, которые участвуют, вреде без чудес.


Название: Re: Проблема запуска Qt приложения
Отправлено: mutineer от Июль 05, 2012, 16:13
В приведенных кусках кода ничего странного не видно (кроме неиспользуемого параметра QApplication* app)


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 05, 2012, 16:24
Тупиковая ситуация однако получается....


Название: Re: Проблема запуска Qt приложения
Отправлено: mutineer от Июль 05, 2012, 16:25
Да, придется ждать волшебного экстрасенса, который узнает что же не так, не видя кода


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 05, 2012, 16:40
А реально вообще перенести большой проект с несколькими компилируемыми dll под Qt Visual Studio Add-in. Просто в QtCreator я пробовал использовать компилятор студии, но возникли проблемы с ActiveQt. Всё таки в студии отладка программ более дружелюбна и в приложении всегда можно отследить где программа умерла.
Может есть какие нибудь статьи на эту тему?


Название: Re: Проблема запуска Qt приложения
Отправлено: kambala от Июль 05, 2012, 16:58
аддин добавляет команду меню «import existing .pro file», так что думаю можно без проблем


Название: Re: Проблема запуска Qt приложения
Отправлено: Alex_C от Июль 05, 2012, 22:08
Если ошибка вылетает до запуска main, значит dll линкуются статически.
От сюда вывод - ошибка изначально в инициализации dll.


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 06, 2012, 00:10
Если ошибка вылетает до запуска main, значит dll линкуются статически.
Я использовал MinGV компилятор - там, вроде, не надо указывать import/export.
Также использую динамически собранную Qt библиотеку и в настройках проекта не указываю нигде -static. Поэтому я смею надеяться, что сборка динамическая.
Ниже содержимое .pro файла для dll:
Код:
TEMPLATE = lib

QT += gui core

DESTDIR = ../build/lib/$$TARGET

win32:CONFIG += qaxcontainer
win32:DLLDESTDIR = ../build/bin

MOC_DIR = ../build/mocs/$$TARGET
OBJECTS_DIR = ../build/objs/$$TARGET

## CONFIG settings(debug)
CONFIG += debug
CONFIG -= release
DEFINES += DEBUGING
DEFINES += PROS


Название: Re: Проблема запуска Qt приложения
Отправлено: Bepec от Июль 06, 2012, 06:46
Наверно это будет страшным откровением для тебя - кодом поделиться всё же придётся.
Или же жди чуда. Говорят на новый год баги уходят праздновать на юг. И программы начинают работать.


Название: Re: Проблема запуска Qt приложения
Отправлено: Kurles от Июль 06, 2012, 07:59
Обычно если запускать приложение вне криейтора, то винда напишет с какой dll проблемы.


Название: Re: Проблема запуска Qt приложения
Отправлено: Bepec от Июль 06, 2012, 08:17
Думаю наврятли. Там пишет при зависимостях. А если код кривой в программе, она так и скажет.
Цитировать
warning: auto-importing has been activated without --enable-auto-import specified on the command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.
Вот это переведи и подумай, мб это оно и есть?

PS Переведи и прочитай. Прочитай и переведи.


Название: Re: Проблема запуска Qt приложения
Отправлено: nevero от Июль 06, 2012, 22:15
Цитировать
warning: auto-importing has been activated without --enable-auto-import specified on the command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.
Вот это переведи и подумай, мб это оно и есть?
Если честно, то я не понимаю смысл данной опции....
Это предупреждение появляется как раз в dll для графического интерфейса (там же используется форма из QtDesigner).