Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Прога из среды работает, а из exe-шника - нет, W7, VS 2008, Qt 4.8.5.  
:(
    Опции темы
EKoshelev
Дата 23.12.2014, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Значит такая тема.

Есть программа. Раньше я её писал и дорабатывал в XP, и всё было ништяк. Потом юзера мне сказали, что она на одних компах работает, а на других - нет, то есть просто не запускается. Я тут как раз новый комп получил с Windows 7 на борту и в ней тоже не работает. То есть из Visual Studio 2008 запускается (правда там сообщение выскакивает), а когда запускаю exe-шник - не пашет. Сообщение при компиляции такое: "Debuging information for 'ApplyName' cannot be found or does not match. Binary was not built with debug information. \n Do you want to continue debugging?" - отвечаю "Да", и после этого прога работает как надо. Когда запускаю прогу из экзешника вижу сообщение: "Прекращена работа программы "ApplyName.exe" и три опции: 
- Искать решение проблемы в Интернете и закрыть
- Закрыть программу
- Отладить программу.
Выбираю "Закрыть программу".

Если у кого-то возникнут вопросы о dll-инах которые должны лежать рядом с exe-хой и которые, (судя из контекста) могли перекочевать из XP в семёрку или из одной версии Qt в другую, то полагаю, что с ними (dll-инами) всё путём, т. к. я их для этого нерабочего проекта брал из установки Qt с этого компа.

Мною были совершены попытки отыскания данной ошибки путём расстановки команд записывающих всякое в буфер обмена. Т. е. после этого можно запустить приложение, оно вырубится, а потом зная, что осталось в буфере определить где программа ещё точно выполнялась, и где уже точно выполняться перестала. Эти команды были раскиданы в нескольких местах в конструкторе главной формы.

Результат улыбнул. Программа стала работать и из среды, и из экзешника. Когда удалил запись в буфер обмена - ситуация повторилась. Снова добавил - снова всё разарботало.

Искал так же путём комментирования всего конструктора (всё работало ото всюду) и дальнейшего раскомментирования в целях найти то место, которое вызывает глюк. В результате выяснил, что по каким-то причинам место глюка кочует из одной точки программы в другую. Т. е. в одном случае делаю вывод, что глюк вызывается в одном месте программы, в другом случае - в другом.

Может быть кто-то сталкивался с такими чудесами? Посоветуйте что-нибудь пожалуйста.

Заранее благодарю.



--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
maint
Дата 23.12.2014, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 12.5.2008

Репутация: нет
Всего: 2



обычный фигня при неверной работе с памятью. Где то чего то перекрывает, портит. Может где то не инициализированно, что то. В общем простор для поиска
PM   Вверх
EKoshelev
Дата 23.12.2014, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



maint, По моему опыту, если проблемы с памятью, то прога от запуска к запуску может вести себя по разному.

В данном случае, если запустилась в первый раз, то запустится и во все остальные. Если в первый раз не запустится, то и в остальные тоже не запустится.

Так что как-то сомневаюсь на счёт проблем с памятью.

И потом, почему закидывание нескольких значений в буфер моментально решает эти самые проблемы?

Это сообщение отредактировал(а) EKoshelev - 23.12.2014, 13:55


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
EKoshelev
Дата 23.12.2014, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Ну, выходит, я приврал, что ошибка сразу в нескольких местах. Получилось вот что. В коде есть такая строка:

    connect(m_rightButton, SIGNAL(pressed()), this, SLOT(rightButtonPressedSlot()));

Если её закомментить, то всё работает. Если раскомментить - выше описанные симптомы. Даже если раскомментить приведённую строку и закомментить тело слота.

При этом есть аналогичная строка с аналогичным слотом:

    connect(m_leftButton, SIGNAL(pressed()), this, SLOT(leftButtonPressedSlot()));

которая никаких сбоев, похоже, не даёт. С ней работает.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
EKoshelev
Дата 24.12.2014, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Строка эта была в процедуре, в которую передавалась кнопка m_rightButton.

После передачи на неё рисовалась картинка, а потом устанавливался connect.

Переставил connect до рисования и вроде стало работать.

В чём была причина так и не понял.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
math64
Дата 24.12.2014, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Вызывать connect() лучше всего сразу после создания объектов, обычно в конструкторе.
Если кнопка не должна реагировать на нажатия, лучше сделать её не активной.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.