Название: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 11, 2013, 22:56 IDE QtSDK
Помогите новичку понять причину. При компиляции проекта в Дебаг-режиме "все красиво", но если компилю релиз, то получаю следующее сообщение: "QObject::moveToThread: Current thread (0x8923d0) is not the object's thread (0x79ebc8). Cannot move to target thread (0x8923d0)" каждый раз когда выполняется функция addDatabase. ----------- Проверено в разных вариантах вызова: 1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "dbconnect"); 2. QSqlDatabase *db; db = &QSqlDatabase::addDatabase("QMYSQL","dbconnect"); 3. QSqlDatabase db; db.addDatabase("QMYSQL","sergdbconnect"); ------------ В этом проекте с тредами непосредственных действий не провожу, так что явно это особенности вызова функции. Ткните носом: Что я упускаю? ??? Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: carrygun от Март 12, 2013, 05:10 Чистить проект и пересобирать пробовали?
Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Bepec от Март 12, 2013, 07:01 Нет кода, нет проблемы. Точнее я не вижу проблемы :D Помочь не могу.
PS moveToThread вы где-то всё таки вызываете. Мб и невольно :D Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: carrygun от Март 12, 2013, 07:53 PS moveToThread вы где-то всё таки вызываете. Мб и невольно :D Не обязательно. Я несколько раз натыкался на проблемы с тредами в приложениях, где эти самые треды и не используются. Обычно очистка и пересборка помогают. Или кумеки хватает. Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 12, 2013, 22:24 Чистить проект и пересобирать пробовали? Я, возможно, не понимаю терминологии. Чистить проект - это в смысле код пересмотреть или специфическая операция в системе?Тут дело в том, что даже следующий "куцый" код вызывает ту же проблему при компиляции релиза: Код: int main(int argc, char *argv[]) PS moveToThread вы где-то всё таки вызываете. Мб и невольно :D Ну, я согласен что наверняка где-то косячу. Может, код выше даст ответ, который мне не виден? :-[ Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Bepec от Март 12, 2013, 22:51 завтра (утром, а не через 9 минут) проверю :D
Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: carrygun от Март 13, 2013, 05:36 Я, возможно, не понимаю терминологии. Чистить проект - это в смысле код пересмотреть или специфическая операция в системе? Если пишешь в креаторе, то в верхнем меню "Сборка" пункты "Очистить все" и "Пересобрать все". Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 13, 2013, 09:01 Если пишешь в креаторе, то в верхнем меню "Сборка" пункты "Очистить все" и "Пересобрать все". Не помогает.Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Bepec от Март 13, 2013, 09:03 Код в моей VS 2008 спокойно проходит компиляцию. Видимо у вас или проблема в подключаемых либках, либо какие то глобальные настройки.
PS а мб и креатор глюкавый :D Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: carrygun от Март 13, 2013, 12:31 А кутэшный MySQL модуль для релиза то собран?
Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 13, 2013, 12:46 Код в моей VS 2008 спокойно проходит компиляцию. Видимо у вас или проблема в подключаемых либках, либо какие то глобальные настройки. Не утешительно. :-\PS а мб и креатор глюкавый :D 1. Есть мысли, что за глобальные настройки могут влиять? ОС или IDE? 2. Я использовал Qt 4.8.1, а теперь попробую на 4.7.2 (доступен в Креаторе). Правильно я понимаю, что драйвер-плагин QMYSQL прийдется перекомпилировать для этого? (так просто 4.7.2 не увидел этого драйвера). Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 13, 2013, 13:01 А кутэшный MySQL модуль для релиза то собран? при компиляции получил обе длл-ки:qsqlmysql4.dll и qsqlmysqld4.dll - второй корректно работает, т.к. дебаг-компиляция работаетю - а вот релизную длл-ку как-то можно еще проверить? На чистой машине я её так и не смог подключить ("driver not loaded" - P.S. либы по каталогам разложил, в т.ч. \sqldrivers ;)), подумал, что проблеммы могут быть (или не быть) причиной-следствием. А как эту мысль проверить невкумекал пока. Название: Re: QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: carrygun от Март 13, 2013, 13:19 Я конечно возился с мускулем, но такой проблемы не видел ни разу. Единственно что пришлось плагин пересобирать для новой версии мускуля. Ну и попробуй чтоли под версию кутэ тоже собрать. Фиг знает как там дела с плагинами.
Название: [РЕШЕНО] QSqlDatabase::addDatabase, проблема при компиляции релиза Отправлено: Boser от Март 14, 2013, 22:19 Проблема, и даже две, решились.
Если коротко, то причина: креатор глюкавый :D Если инетесно, то подробнее: решил я QMYSQL-собрать для MySQL5.5 32bit, а перед этим перекомпилировал Qt4.8.1 - думаю это и был решающий момент, т.к. в результате: 1. На удаленной "чистой" машине с 32-битным MySQL серверная релизная часть моего проекта заработала "как часы" без единого Варнинга после замены драйвера на свежесобранный qsqlmysql4.dll (само приложение я даже не перекомпилировал). 2. На машине с Креатором и 64-битным MySQL (и старыми неперекомпилированными драйверами qsqlmysql4.dll) релиз скомпилировался, выдал тот же варнинг про "QObject::moveToThread....", но при этом все отработал как нужно. 3. И, что для меня странно, но факт, когда я заменил драйвер qsqlmysql4.dll на свежий "32-битный", то и на локальной машине релиз отработал все без варнингов и ошибок. А я то считал, что драйвер необходимо компилировать каждый раз под разные версии и разрядность мускула - приятная неожиданность. Спасибо всем. Проблема решена. |