На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
Страницы: (5) 1 2 [3] 4 5  все  ( Перейти к последнему сообщению )  
> mysql qt , создание плагина
    Скорее всего, да, rodion просто не умеет подключать либы к mingw.
      У меня к сожалению mysql 5.7. Драйвер для mysql я собрал, благодаря вашим советам.
      В качестве тестового приложения использую пример sqlbrowser. Вот последний говорит что не может загрузить Драйвер для mysql, но драйвер существует.
          хоть что-то стало понятно.
          1. признало что мой qsqlmysqld.dll плагин
          2. чего то не хватает.
          QLibraryPrivate::loadPlugin failed on "C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll" : "Cannot load library C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll: Не найден указанный модуль."
            Попробуй вот такой финт:

            ExpandedWrap disabled
              int main(int argc, char *argv[]) {
                QApplication App(argc, argv);
                /////////////////////////////////////////////////////////////////////////
                // создай рядом с __исполняемым__ файлом каталоги:
                // plugins/platforms
                //    qminimal.dll
                //    qoffscreen.dll
                //    qwindows.dll
                // plugins/sqldrivers
                //   твои драйвера
                /////////////////////////////////////////////////////////////////////////
                QStringList PathList = App.libraryPaths();
                PathList.append(App.applicationDirPath() +"/plugins");
                App.setLibraryPaths(PathList);
                /////////////////////////////////////////////////////////////////////////
                QTextCodec *codec = QTextCodec::codecForName("UTF-8");
                QTextCodec::setCodecForLocale(codec);
                QDir::setCurrent(qApp->applicationDirPath());
                MainWindow *AppMainWindow = new MainWindow();
                AppMainWindow->show();
                return App.exec();
              }


            Добавлено
            Add: dll-ку от MySQL положи либо рядом с исполняемым файлом, либо в любой другой каталог из %PATH%
              Сделай билд либы и проверь лежит ли она по указанным путям. В пост билд евентс добавь qtшную утилиту деплоя, для того, чтобы скопировать все зависимые либы и ресурсы в папку куда был билд приложения.
              Если не получится, выкладывай проект.
                Цитата MedEx @
                В пост билд евентс добавь qtшную утилиту деплоя

                Поделись, плс, линком на эту инфу, типа "как сделать", или распиши по шагам.
                Я все делаю вручную - все норм, но не по фэншую это.
                    MedEx, сенкс!
                      Скопировал C:\Program Files\MySQL\MySQL Connector.C 6.1\lib\libmysql.dll к исполняему файлу
                      послали в другое место QLibraryPrivate::loadPlugin failed on "C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll" : "Cannot load library C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll: %1 не является приложением Win32."

                      Попробовал сделать либу используя только reimp
                      reimp --dlltool C:\Qt\Qt5.5.1\Tools\mingw492_32\bin\dlltool.exe libmysql.lib
                      получил файл Прикреплённый файлПрикреплённый файлdcfdh.s (461 байт, скачиваний: 124) была выдана ошибка CreateProcess
                        Цитата rodion @
                        У меня к сожалению mysql 5.7.

                        теперь и у меня тоже мускул 5.7 :D
                        опробовал его тоже все пучком :)

                        Цитата rodion @
                        Скопировал C:\Program Files\MySQL\MySQL Connector.C 6.1\lib\libmysql.dll к исполняему файлу
                        послали в другое место QLibraryPrivate::loadPlugin failed on "C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll" : "Cannot load library C:/Qt/Qt5.5.1/5.5/mingw492_32/plugins/sqldrivers/qsqlmysqld.dll: %1 не является приложением Win32."

                        Попробовал сделать либу используя только reimp
                        reimp --dlltool C:\Qt\Qt5.5.1\Tools\mingw492_32\bin\dlltool.exe libmysql.lib
                        получил файл Прикреплённый файлПрикреплённый файлdcfdh.s (461 байт, скачиваний: 124) была выдана ошибка CreateProcess

                        :wacko: старик ты протестируй мускул для начала на простом примере типа этого:
                        ExpandedWrap disabled
                          #include <cstdio>
                          #include <windows.h>
                          #include <mysql.h>
                           
                          MYSQL mysql;
                          MYSQL_RES* res;
                          MYSQL_ROW row;
                           
                          void exiterr(int exitcode) {
                             printf("%s\n", mysql_error(&mysql));
                             exit(exitcode);
                          }
                           
                          int main(){    
                              if (!mysql_init(&mysql))
                                  abort();
                              
                              if (!(mysql_real_connect(&mysql,
                                                       "localhost",
                                                       "root",
                                                       "password",
                                                       "testdb",
                                                       3306, NULL, 0)))
                                  exiterr(1);
                              
                              if (mysql_select_db(&mysql,"testdb"))
                                  exiterr(2);
                              
                              if (mysql_query(&mysql,"select * from test"))
                                  exiterr(3);
                              
                              if (!(res = mysql_store_result(&mysql)))
                                  exiterr(4);
                              
                              while((row = mysql_fetch_row(res))) {
                                  for (int i = 0; i < mysql_num_fields(res); i++)
                                     printf("%s\t",row[i]);
                                  printf("\n");
                              }
                              
                              if (!mysql_eof(res))
                                  exiterr(5);
                              
                              mysql_free_result(res);
                              mysql_close(&mysql);
                          }

                        а потом пробуй с Qt :)
                        Сообщение отредактировано: Cfon -
                          Cfon, будешь просто адовый кросавело, если сделаешь батник, который выкачивает, устанавливает и собирает все как надо 8-) В качестве качалки лучше всего использовать консольную версию WGet'а.
                            Цитата JoeUser @
                            Cfon, будешь просто адовый кросавело, если сделаешь батник, который выкачивает, устанавливает и собирает все как надо 8-) В качестве качалки лучше всего использовать консольную версию WGet'а.

                            да я вроде все описал для простого случая путем обращения через MySQL C API :)
                            с Qt щас не имею возможности протестить мускул, а вот MySQL Connector/C++ попробую протестить :D
                              И как этот простой пример собрать? У меня кроме qt ничего :'( Опять чехарда с либами?
                                Цитата rodion @
                                И как этот простой пример собрать? У меня кроме qt ничего :'( Опять чехарда с либами?

                                как как просто :D
                                1. создаешь консольное приложение
                                2. копипастишь мой пример
                                3. прописвашь настройки компилятора:

                                g++ example.cpp -o example.exe "-IC:/MySQL/MySQL Server 5.7/include" "-LC:/MySQL/MySQL Server 5.7/lib" -llibmysql

                                4.чтобы работало надо подключать liblibmysql.a, для этого запускаешь в консоле reimp.exe libmysql.lib
                                она создаст два файла (liblibmysql.a и libmysql.def) но нужен один liblibmysql.a
                                когда указываешь опцию -l для g++ то обрати внимание на то что вместо liblibmysql.a указывается только libmysql, т.е -llibmysql,
                                все эти настройки можно естесно делать из IDE. Кстати какой у тебя IDE?

                                5. не забудь прописать путь в переменную окружения виндос PATH=C:/MySQL/MySQL Server 5.7/bin;...
                                6. в папке bin должен лежать длл: libmysql.dll
                                7. создай через консоль mysql.exe: БД testdb и таблицу test и заполни ее чем нибудь :)
                                8. ВСЕ! :D

                                пс. пример тестил на минге 4.9 + мускул 5.7 + notepad++
                                Сообщение отредактировано: Cfon -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (5) 1 2 [3] 4 5  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0712 ]   [ 20 queries used ]   [ Generated: 19.04.24, 07:38 GMT ]