![]() |
|
|
![]()
|
|
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Недавно обнаружил новую проблему с Qt. Может быть у кого-нибудь такая же была или кто-нибудь знает как её решить? Буду очень признателен!
У меня есть два проекта - один библиотека на С++, другой интерфейс на Qt. Всё делаю и собираю при помощи Qt Creator и minGW(тот что в SDK идет.) Всё работало хорошо, до недавнего времени. Код из библиотеки выполняется только если я пересобираю интерфейс, если же нажимаю просто собрать и запускаю - всё нормально запускается, но твориться какая-то белиберда! Переустановка Qt SDK ничего не дала. Что делать не знаю! Помогите пожалуйста!! |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Белиберду в студию! Телепаты нынче дорогие. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Я так понимаю, что библиотека собирается в .dll, а интерфейс на Qt в .exe. Затем .dll много раз пересобирается и после этих пересборок интерфейс (.exe) перестает работать? Попахивает нарушением binary compatibility:
http://qt.osdn.org.ua/binarycompat.html Бинарная Совместимость http://qt.gitorious.org/qt/pages/BinaryCom...lityWorkarounds Видимо интерфейс библиотеки еще не устаканился и постоянно добавляются новые методы, исчезают старые или переименовываются и тому подобное. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
JackYF, тяжело сюда её описать. Код уже не маленький. Весь тут: http://code.google.com/p/smart-flow/source/browse/
SABROG, ок, спасибо, буду читать. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
SABROG, сложная какая штука оказалась
Как я понял что после полной пересборки всё должно хорошо работать, но у меня почему-то этого не поисходит. После самой пересборки - всё хорошо, но вот потом если я просто собираю - то опять всё плохо |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Полная пересборка это сначала пересборка библиотеки, а потом пересборка GUI? Пересборки чего GUI или библиотеки? "Просто собираю" что библиотеку или GUI? |
|||
|
||||
| ivanzoid |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
||||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
SABROG, пересборка GUI. Раньше когда я собирал новую версию библиотеки, мне требовалось только собрать GUI (нажимал Ctrl + R и не знал проблем)
А теперь приходится пересобирать GUI. ivanzoid, определяю это тем что значения переменных устанавлимаются в +бесконечность, и ничего не отображается на сетке (должен ход решения) |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну так "Новая версия библиотеки" = "Пересборка GUI", если нет бинарной совместимости. Ctrl+R это не сборка, а запуск. Сборка Ctrl+B. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Всё ещё продолжают сохранятся эти глюки. Даже если полностью заново пересобираю библиотеку, затем пересобираю интерфейс, запускаю - выполняется какой-то другой код. :(
Мой код выполняется только если нажимаю на отладку. |
|||
|
||||
| Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Может быть у меня в проекте что-то не так настроено?
SmartFlow.pro:
SmartFlowLib.pro
|
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
А чего это .dll делает в проекте? Линкеру фиолетово есть длл на компе или нет его, ему только .lib/.a файл нужен, чтобы знать какие функции нужно импортировать. Файлик libsmartflowlib.lib или smartflowlib.lib или libsmartflowlib.a есть такой? |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
SABROG, ага, такой есть: libsmartflowlib.a - я только думал что он нужен для статической сборки. Как его подключать так же?
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вместо .dll. В зависимости от того какой у тебя компилятор:
Это сообщение отредактировал(а) SABROG - 6.4.2010, 21:01 |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
И вот ещё что не понятно. Если запуская не через Qt (Ctrl+R) А захожу в папку и запускаю файл SmartFlow.exe - всё работает нормально (Остальный Qt***.dll лежат в этой же папке)
Среду сборки я никак не трогал :/ |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
У меня как-то косяк был интересный. Рядом с exe'шник'ом лежали Qt'шные .dll'ки. Сама программа использовала плагин (.dll), и этот плагин грузил .dll'ки из путей находящихся в PATH. В нормальной ситуации и программа и плагин должны были использовать общие Qt'шные dll'ки. В результате конечно ничего не работало, если я запускал программу через консоль, а если просто в папке тыкал, то все было нормально.
Попробуй удали или перемести в подпапку все .dll'ки перед тем как запускать через Ctrl+R. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Я попробовал переставить запуск на среду системы - вроде бы теперь всё хорошо работает. Нужно ещё потестировать...
|
|||
|
||||
| Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Опять возникли такие-же проблемы!
Я уж даже и не знаю что делать теперь :( :( :( Выполнил полную пересборку библиотеки, полную пересборку интерфейса - всё равно выполняется какая-то фигня. Если начинаю проходится по коду отладчиков - всё гуд. Когда просто запускаю, в консоль приложения выдаёт следующее:
Когда прохожусь отладчиком:
всё хорошо. Что можно сделать? Очень прошу, помогите! Это сообщение отредактировал(а) Elfet - 20.4.2010, 12:49 |
||||
|
|||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Так же заметил ещё странную вещь, часть кода выполняется по прежнему правильно и только этот кусок (с определениями delta time) работает неправильно (хотя может быть и ещё где-то неправильно работает)
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Попробуй собрать с помощью MinGW, может быть удастся понять что происходит по другим ошибкам.
|
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
SABROG, а я и так его с помощью MinGW собираю (который в SDK идёт). визуалом думаю мне не удастся собрать либу.
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Возможные причины ошибок:
- микс debug и release версий модулей. Например exe - release, .dll - debug. Тоже самое касается и плагинов. - корявый код реализации многопоточности в программе - микс Qt кода написанного под разные версии библиотеки Qt. Например exe писался под 4.5.0, а .dll под 4.6.2. Пока больше ничего в голову не приходит. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Возможно, вариант в ошибках с памятью при работе программы. Неплохо бы проверить какой-нибудь утилитой, аналогичной valgrind'у в Unix-системах.
|
|||
|
||||
| Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
У нас пока всё debug. вот это возможно, поскольку первый раз с многопоточностью работаю. Вот тут у меня класс для работы с ней: http://code.google.com/p/smart-flow/source...erationThread.h
Хотя я вроде всё по документации делал.
Мы под одной и той же собираем. А подскажите пожалуйста, что-нибудь под windows? |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |