QT q mysql драйвер не загружен - PullRequest
0 голосов
/ 20 апреля 2020

Я знаю, что на этом форуме уже есть много тем об этой проблеме, но мне не удалось решить мою после них.

Моя конфигурация следующая:

Версия QT: 5.14.2 - mscv2017_64

Компилятор: mscv amd64

Моя проблема в том, что мое приложение не загрузить lib mysql .dll. Вот что я сделал:

Я открыл командную строку MSCV 2017, 64 бита, предоставленной qt, и инициализировал свою среду, используя vcvarsall.bat amd64. Затем я собрал драйвер sql, как описано в документации 1013 *.

Вот результат вызова qmake: enter image description here

Затем запустил nmake и nmake install и в папке C:\Qt\5.14.2\msvc2017_64\plugins\sqldrivers я нашел следующие файлы. enter image description here

Затем я добавил libmysql.dll в папку, где был создан exe-файл моего приложения. Я получил этот файл из папки установки mysql сервера C:\Program Files\MySQL\MySQL Server 8.0\lib.

Затем я перестроил свое приложение, но у меня все еще появляется та же ошибка, говоря, что драйвер не был загружен. Я скомпилировал, используя флаг QT_DEBUG_PLUGINS=1, и получил в качестве вывода:

"использует плагин" C: / Qt / 5.14.2 / msvc2017_64 / plugins / sqldrivers / qsqlpsqld.dll ' несовместимая библиотека Qt. (Невозможно смешать библиотеки отладки и выпуска.) "не плагин QFactoryLoader :: QFactoryLoader () проверка пути к каталогу" C: / Users / Thomas Bouchan / Documents / Personal / C ++ / SSVP / build-SSVP-project -Desktop_Qt_5_14_2_MSVC2017_64bit-Release / release / sqldrivers "... Невозможно загрузить библиотеку C: \ Qt \ 5.14.2 \ msvc2017_64 \ plugins \ sqldrivers \ q sqlmysql .dll: указанный модуль не найден. Ошибка QLibraryPrivate :: loadPlugin для "C: / Qt / 5.14.2 / msvc2017_64 / plugins / sqldrivers / q sqlmysql .dll": "Невозможно загрузить библиотеку C: \ Qt \ 5.14.2 \ msvc2017_64 \ plugins \ sqldrivers \ q sqlmysql .dll: указанный модуль не найден. " QSqlDatabase: Q MYSQL драйвер не загружен QSqlDatabase: доступные драйверы: QSQLITE Q MYSQL QMYSQL3 QODB C QODBC3 Q PSQL QPSQL7 "

Из этого я не знаю, что делать , как в указанной папке, DLL есть ... Это вопрос 64 или 32 бит? Должен ли я собрать драйвер с другим компилятором (не amd64?)?

1 Ответ

0 голосов
/ 20 апреля 2020

Мне наконец-то удалось заставить его работать.

Проблем с компиляцией драйверов не было, но проблема возникла из файла libmysql.dll. Я не знаю, что случилось с этим dll, но когда я заменил его на тот, что скачал архив q sqlmysql .dll_Qt_SQL_driver_5.14.2_MSVC2017_64-Bit.zip . Мне нужно было только заменить dll, чтобы не использовать плагины архива.

Открыв qsqlmysqld.dll с помощью обходчика зависимостей, я обнаружил, что в libmysql.dll требуются два дополнительных файла dll: LIBSSL-1_1-X64.dll и LIBCRYPTO-1_1-X64.dll. Их можно найти в каталоге bin сервера mysql. В моем случае C:\Program Files\MySQL\MySQL Server 8.0\bin. Добавление этих файлов в каталог исполняемого файла решает проблему. Спасибо @king_nak за подсказку!

...