Russian Qt Forum
Сентябрь 30, 2024, 20:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Проблема запуска Qt приложения  (Прочитано 7349 раз)
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.
Записан
Bepec
Гость
« Ответ #1 : Июль 05, 2012, 15:48 »

Есть стул. У него 4 ножки и коричневое сиденье.

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

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

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

PS телепаты в отпуске. Код, код, код, код в студию. 
Записан
nevero
Гость
« Ответ #2 : Июль 05, 2012, 15:54 »

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

Это огромный проект, который мне достался по наследству и я не могу приводить его код типа Open Source.
С Qt до этого я не работал и понятия не имел, что там столько проблем - взять рабочий проект и просто скомпилить, запустить оказалось невыполнимо.

Проблема не в Qt - она либо в проекте, либо в руках, которые в этом проекте копаются.
А до main может выполняться инициализация статических переменных, в конструкторах которых может прятаться код любой сложности
Записан
nevero
Гость
« Ответ #4 : Июль 05, 2012, 16:06 »

Но по факту цепочка вызова очень простая, я забыл сказать только про IView:
Код:
class IView: public QMainWindow
Код:
IView(QWidget* parent) : QMainWindow(parent) {}

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

То есть все вызовы, которые участвуют, вреде без чудес.
Записан
mutineer
Гость
« Ответ #5 : Июль 05, 2012, 16:13 »

В приведенных кусках кода ничего странного не видно (кроме неиспользуемого параметра QApplication* app)
Записан
nevero
Гость
« Ответ #6 : Июль 05, 2012, 16:24 »

Тупиковая ситуация однако получается....
Записан
mutineer
Гость
« Ответ #7 : Июль 05, 2012, 16:25 »

Да, придется ждать волшебного экстрасенса, который узнает что же не так, не видя кода
Записан
nevero
Гость
« Ответ #8 : Июль 05, 2012, 16:40 »

А реально вообще перенести большой проект с несколькими компилируемыми dll под Qt Visual Studio Add-in. Просто в QtCreator я пробовал использовать компилятор студии, но возникли проблемы с ActiveQt. Всё таки в студии отладка программ более дружелюбна и в приложении всегда можно отследить где программа умерла.
Может есть какие нибудь статьи на эту тему?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #9 : Июль 05, 2012, 16:58 »

аддин добавляет команду меню «import existing .pro file», так что думаю можно без проблем
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex_C
Гость
« Ответ #10 : Июль 05, 2012, 22:08 »

Если ошибка вылетает до запуска main, значит dll линкуются статически.
От сюда вывод - ошибка изначально в инициализации dll.
Записан
nevero
Гость
« Ответ #11 : Июль 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
« Последнее редактирование: Июль 06, 2012, 00:15 от nevero » Записан
Bepec
Гость
« Ответ #12 : Июль 06, 2012, 06:46 »

Наверно это будет страшным откровением для тебя - кодом поделиться всё же придётся.
Или же жди чуда. Говорят на новый год баги уходят праздновать на юг. И программы начинают работать.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #13 : Июль 06, 2012, 07:59 »

Обычно если запускать приложение вне криейтора, то винда напишет с какой dll проблемы.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Bepec
Гость
« Ответ #14 : Июль 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 Переведи и прочитай. Прочитай и переведи.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.201 секунд. Запросов: 23.