Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt +Firebird error thread / 23 сообщений из 23, страница 1 из 1
04.12.2015, 09:23
    #39120136
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Qt 5.5.1 MinGW + Firebird 2.5
Firebird 2.5 запущен в суперклассике (если это важно, хотя не этого раздела форума форум)
Qt 5.5.1 скомgилен также в статике
Qt-драйвер Fbird скомпилен и для динамики и для статики

1. при компиляции проекта с коннектом в Qt-динамике ругается на библиотеку fbclient.dll:
Код: plaintext
1.
---QObject::moveToThread: Current thread (0x3b2b20) is not the object's thread (0x18d6778).
---Cannot move to target thread (0x3b2b20)
ну и ест-но
Код: plaintext
---QSqlDatabase: QIBASE driver not loaded 
2. В QT-статике все ОК . Статику собирал ради прикола, без WebKit, полагаю без Thread, прикручивал только OpenSSL

Кто использует связку Qt+Firebird, как-нибудь можно прикрутить Firebird 2.5?
Или отключить Thread я так понимаю дело в нем...
Посоветуйте что-нибудь невежде
Гугл приводит к единичным bugtrackeram
...
Рейтинг: 0 / 0
04.12.2015, 12:29
    #39120383
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_Ustinov,

тут могу посоветовать только обратиться к профессионалу.

тебе надо брать приложение и отдавать.

вполне допускаю, что проблема в том, что такая конфигурация сборки вообще не может работать.

например, .dll использует динамический рантайм, а приложение - статический. это недопустимо в общем случае.
...
Рейтинг: 0 / 0
04.12.2015, 12:32
    #39120389
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_UstinovИли отключить Thread я так понимаю дело в нем...

дело НЕ в нем.

Alex_UstinovПосоветуйте что-нибудь невежде
Гугл приводит к единичным bugtrackeram


конечно, потому что никому из нормальных людей такую сборку делать мысль в голову не прийдет ....
...
Рейтинг: 0 / 0
04.12.2015, 13:28
    #39120477
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZiv,

ну мои познания в глубинах С++ я скромно оценю на 2-ку, конечно
Qt5.5.1+MinGW, c оффсайта, полный комплект, Win7
компилил Qt-драйвера все нормально, это было дело 5-ти минут )
собрал
PATH_QT_staic/qmake из статики + INCLUDE +LIBS = fbclient_ms.lib
mingw32-make
mingw32-make install

PATH_QT/qmake + INCLUDE +LIBS = fbclient_ms.lib
mingw32-make
mingw32-make install
библиотеки легли куда надо
по аналогии с MySQL и PgSQL - эти работают что в динамике, что в статике

Само приложение... там обычное подключение
QSqlDatabase QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");

qDebug() << db.drivers(); // - здесь драйвер подключен, в выводе есть и в статике и в динамике
db.setHostName("localhost");
db.setDatabaseName("d:/db/fbird/data/waybill.fdb");
db.setUserName("SYSDBA");
db.setPassword("masterkey");

if (!db.open()){..............

клиентская библ fbclient.dll из zip-noinstall c оффсайта (люблю не-инстальные пакеты)
Цель такая - в приложении сделать выбор между локальной базой и серверной. Чтобы работало без админских привелегий, чтобы не устанавливать службы-сервисы в случае локального использования базы...
т.е. надо какой-то embed и client. Решил посмотреть вариант Firebird embed (просто пока проверить решил как клиента) + MySQL client
с MySQL embedd +MySQL client боюсь не разрулю в одной куче
авторвполне допускаю, что проблема в том, что такая конфигурация сборки вообще не может работать.в обычном случае - берем Qt с оффсайта +Firebird с оффсайта компилим драйвера Qt для FBird и работаем c fbclient.dll, что я в принципе и сделал... в том и прикол что в динамике упирается в QThread

авторнапример, .dll использует динамический рантайм, а приложение - статический. это недопустимо в общем случае.
..моем понимании Qt-драйвер и есть связка с клиентской библиотекой, просто эти связки компилятся отдельно для статики и динамики.... или я не прав? во всяком случае для MySQL-libmysql.lib PgSQL-libpq.lib это справедливо....
Ну не верю я что Qt в динамике не работает с Firebird )))
...
Рейтинг: 0 / 0
04.12.2015, 13:31
    #39120482
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZiv.............
конечно, потому что никому из нормальных людей такую сборку делать мысль в голову не прийдет .... ))) можно поподробнее, может я полез не туда? в чем я (мой выбор) "ненормален" )) ?
...
Рейтинг: 0 / 0
04.12.2015, 13:38
    #39120494
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_Ustinovв чем я (мой выбор) "ненормален" )) ?
В использовании Qt.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2015, 13:39
    #39120496
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZiv,

и, конечно, все для статики (MySQL PgSQL FB) пробовал вкомпиливается плагинами, как я понимаю
...
Рейтинг: 0 / 0
04.12.2015, 13:45
    #39120510
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Dimitry Sibiryakov,

тогда, вопросы невежды
- для чего Qt, с учетом того что приложение будет готовиться и для Linux
- что выбрать для создания таких приложений GUI+db (подальше от привязки к MS, поэтому и был выбран MinGW)
...
Рейтинг: 0 / 0
04.12.2015, 13:51
    #39120523
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_Ustinov,

авторклиентская библ fbclient.dll из zip-noinstall c оффсайта (люблю не-инстальные пакеты)

-- это уже может быть проблемой само по себе. fbclient.dll собрано с одной CRT и одним компилятором, а твоё приложение -- другим компилятором и с другой CRT.
...
Рейтинг: 0 / 0
04.12.2015, 13:54
    #39120529
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_Ustinovв том и прикол что в динамике упирается в QThread


Ещё раз, QThread тут ни при чём, по крайней мере пока я никаких доводов к обратному не видел.

Alex_Ustinov..моем понимании Qt-драйвер и есть связка с клиентской библиотекой, просто эти связки компилятся отдельно для статики и динамики.... или я не прав? во всяком случае для MySQL-libmysql.lib PgSQL-libpq.lib это справедливо....


Что ты там себе понимаешь -- дело десятое, это не очень важдно для решения проблемы.
Ты неправ, но это не важно.

Alex_UstinovНу не верю я что Qt в динамике не работает с Firebird )))

Я такого не говорил.
...
Рейтинг: 0 / 0
04.12.2015, 13:56
    #39120537
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Судя по тексту ошибки, Qt просто не умеет создать объект в одном потоке, а использовать в
другом. То есть он рассчитан на однопоточность.

Alex_Ustinov- что выбрать для создания таких приложений GUI+db (подальше от
привязки к MS, поэтому и был выбран MinGW)
vxWidgets рекомендую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2015, 13:57
    #39120539
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_UstinovMasterZiv.............
конечно, потому что никому из нормальных людей такую сборку делать мысль в голову не прийдет .... ))) можно поподробнее, может я полез не туда? в чем я (мой выбор) "ненормален" )) ?

Не используй статическую сборку QT вообще. Используй .dll. ВСЁ в виде .dll.
Тем более, что это ничем не хуже статики.

Если говорить кратко, то твоё приложение, статически собранное с QT и с CRT (так по уму должно быть) вообще не должно использовать .dll и, использующие QT и CRT.
Это было бы нарушением one definition rule.
...
Рейтинг: 0 / 0
04.12.2015, 13:59
    #39120544
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZiv,

так в статике то работает, вот от чего мозг ломится
в параллель берем MySQL libmysql.dll собран не Mingw, но через qsqlmysql.dll собранным в Qt-ном MinGW работает в динамике и через libqsqlmysql.a собранным в Qt-ном MinGW работает плагином в статике....
...
Рейтинг: 0 / 0
04.12.2015, 14:07
    #39120563
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_UstinovMasterZiv.............
конечно, потому что никому из нормальных людей такую сборку делать мысль в голову не прийдет .... ))) можно поподробнее, может я полез не туда? в чем я (мой выбор) "ненормален" )) ?
Ну вот смотри, пусть слегка оффтоп.
Мне было нужно быстро слепить прикладушку.

За 3 дня с учетом втыкания в новую для меня технологию WPF у меня уже есть макет, читающий справочники из XML, рисующий данные из оракла в гриде, и с главной менюшкой в виде баяна (accordion) + дерево с картинками, формирующееся тоже по XML.
Проще было сделать в виде риббона, но требования...

Причем сменить драйвер к БД - плевое дело.
...
Рейтинг: 0 / 0
04.12.2015, 14:15
    #39120581
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZiv,

))) все по порядку, сначала...
в том и проблема, что речь не о статике
скачан Qt5.5.1 сборка MinGW, да, согласен, он собран не VCC
скачан Firebird (не знаю чем собран)
ничего пока о статике не говорю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
qDebug() << db.drivers(); 
db.setHostName("localhost");
db.setDatabaseName("example");
db.setUserName("root");
db.setPassword("root");

if (!db.open()){..............

вот это работает с MySQL, подключение есть, все ОК
а для Firebird - выдает ошибку с Thread и библиотека fbclient.dll не "подключается". вот и вся проблема.

------------
...и тут остатике
а со статическим плагином Firebird РАБОТАЕТ! вот такие пироги...а так как я собирал Qt-static без включения Thread, то у меня и закралась мысль, что все дело в треад
---- может быть глюк или нестыковка Qt-thread и драйвера Firebird, вот c этим я полностью соглашусь...
...
Рейтинг: 0 / 0
04.12.2015, 14:33
    #39120609
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Зимаргл..........
Причем сменить драйвер к БД - плевое дело.да я могу сделать и в Вебе, но таковы условия, надо ГУИ, вот и взял "новомодный простой" Qt, драйвер менять не надо, приложение 5 таблиц вывод отчетов...
...
Рейтинг: 0 / 0
04.12.2015, 14:46
    #39120637
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_Ustinovскачан Firebird (не знаю чем собран)
.

Уже хреново. Уже может не работать.

Alex_Ustinovничего пока о статике не говорю
а для Firebird - выдает ошибку с Thread и библиотека fbclient.dll не "подключается". вот и вся проблема.


Ну надо тогда отлаживать, искать ошибку.
...
Рейтинг: 0 / 0
04.12.2015, 14:48
    #39120639
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
MasterZivУже хреново. Уже может не работать.
При чём тут вообще Firebird, если сообщение об ошибке ясно говорит о Qt объектах?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2015, 15:46
    #39120729
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
посмотрю, поищу, насколько мозгов хватит, пока кипят
...
Рейтинг: 0 / 0
05.12.2015, 22:47
    #39121505
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
всем спасибо за урок...
дома спокойно пересобрал плагин Firebird для Qt (для "динамической" сборки)
все заработало, иначе и быть не могло )
Код: sql
1.
2.
3.
4.
5.
D:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\ibase>qmake INCLUDEPATH+=D:/DB/fbird/bin 
INCLUDEPATH+=D:/DB/fbird/include LIBS+=D:/DB/fbird/lib/fbclient.lib -o Makefile ibase.pro
-- на работе был указан путь /lib вместо отмеченного, а сама fbclient.dll лежит именно в /bin
-- больше разницы не нашел в моих экпериментах
-- при сборке для статики мог поправить.....

ладно, все решилось на ошибках учатся, всем еще раз спасибо
...
Рейтинг: 0 / 0
08.12.2015, 02:22
    #39122790
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
нет, на работе перекомпиляция плагина не помогла, пришлось "пересоздать" проект....
но визуально при сборке проскакивал путь к OpenSSL, сейчас его нет.
...
Рейтинг: 0 / 0
23.12.2015, 08:33
    #39135353
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Dimitry Sibiryakov,

>>vxWidgets рекомендую

скомпилил, посмотрел, (Code::Block+wxWidgets)
конкретно - ноу монолит шаре уникод

все как бы хорошо, но речь о меньшем объеме программы чем в QT
особо неуместна
окно с меню+статус бар потянул
------ wxbase30u.dll 4,78 МБ
------- wxmsw30u_core.dll 11,4 МБ

как в QT, почти 1 в 1
лицензии насколько я понял обе под LGPLv3

или я что-то не так понимаю?
...
Рейтинг: 0 / 0
29.05.2016, 03:05
    #39245556
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt +Firebird error thread
Alex_UstinovDimitry Sibiryakov,

>>vxWidgets рекомендую

скомпилил, посмотрел, (Code::Block+wxWidgets)
конкретно - ноу монолит шаре уникод

все как бы хорошо, но речь о меньшем объеме программы чем в QT
особо неуместна
окно с меню+статус бар потянул
------ wxbase30u.dll 4,78 МБ
------- wxmsw30u_core.dll 11,4 МБ

как в QT, почти 1 в 1
лицензии насколько я понял обе под LGPLv3

или я что-то не так понимаю?

Лицензия для wxWidgets совместима с L-GPL за исключением одного момента: то, что сделано с помощью wxWidgets, может распространятся в виде "бинарников" так, как как того пожелает ваша левая нога.

Пишут:

1. Большинство файлов WxWidgets распространяется под LGPLv 2 , плюс возможность распространять бинарники без обязательности предоставления исходников.
2. Большинство мануалов по WxWidgets доступны под "wxWindows Free Documentation License", которая позволяет делать с ними что угодно за одним исключением: запрещено запрещать другим пользователям вытворять с этими файлами то же самое.
...
В лицензии специально многократно оговорена возможность распространения бинарников без предоставления исходных кодов.


Если короткоThe wxWindows Library Licence is essentially the L-GPL (Library General Public Licence), with an exception stating that derived works in binary form may be distributed on the user's own terms.


Из самой лицензииUnder the terms of the original wxWidgets licences, you as a user are not obliged to distribute wxWidgets source code with your products, if you distribute these products in binary form.


Тынц.
....

Т.е., при использовании wxWidgets ты не обязан предоставлять ни исходники своего продукта, ни исходники wxWidgets ни при каких условиях.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt +Firebird error thread / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]