Правильно, поэтому здесь есть несколько вещей, которые следует обсудить, прежде чем предлагать решение, а именно:
1) Когда вы разрабатываете программное обеспечение на компьютере с Windows, и оно прекрасно работает, но не на машинах, на которых вы развернули свое программное обеспечение, первое, что нужно проверить, — это зависимости. Все ли они отправлены должным образом?
Как бы я пошел, чтобы проверить это? В этом и заключается цель свободно доступного обходчика зависимостей. Вы должны работать на машине, на которой вы развернули программное обеспечение; другими словами, после развертывания. Не запускайте его на машине разработки, если он там работает. Хорошо, речь идет об отладке, так что давайте поговорим о Qt...
2) Вы используете модуль QtSql для обработки взаимодействия с базой данных, что хорошо в приложении Qt. Однако основная динамическая библиотека, она же. QtSql4.dll — это абстрагированная функциональность. То есть весь код Qt не связан с конкретными драйверами.
Вы спросите, почему так сделано? Причина относительно проста, поскольку модуль QtSql предоставляет абстрактный интерфейс, должна быть возможность изменять механизм хранения базы данных на лету без перестройки и повторного развертывания вашего программного обеспечения. Что, если конечный пользователь однажды решит использовать другую базу данных? Без этого было бы невозможно.
Правильно, мы приближаемся к общему принципу проектирования, который называется архитектурой плагинов. Документация по проекту Qt содержится здесь. Теперь мы очень близки к решению, поэтому давайте сделаем еще один шаг к концу.
3) Это могла быть часть «слишком длинная, не читайте»: когда вы развертываете свое приложение, вам нужно будет, чтобы ваши конечные пользователи также имели плагины. Это означает, что в этом контексте вам необходимо отправить оба типа sql, QtSql4.dll, а также специальный подключаемый модуль драйвера. Вы, видимо, упускаете из виду последнее. Поэтому подготовьтесь к отправке. Но какая вторая, верно? Итак, вы, кажется, в настоящее время используете sqlite и Qt 4, поэтому вам нужно будет получить драйвер sqlite Qt 4 для этого.
Вы можете самостоятельно проверить драйверы базы данных Qt SQL здесь:
Драйверы базы данных SQL
В зависимости от того, какую версию sqlite вы используете, у вас есть два варианта:
QSQLITE2 SQLite версии 2
QSQLITE SQLite версии 3
По сути, вот как вы сами создадите драйвер, если вам нужно это сделать:
cd %QTDIR%\src\plugins\sqldrivers\sqlite
qmake "INCLUDEPATH+=C:/SQLITE/INCLUDE" "LIBS+=C:/SQLITE/LIB/SQLITE3.LIB" sqlite.pro
nmake
После того, как у вас есть эта dll, что, я уверен, вы уже сделали, если у вас уже есть программа, работающая в Windows, скопируйте qsqlite4.dll
$QTDIR\plugins\sqldrivers в каталог sqldrivers
рядом с исполняемым файлом вашего приложения. Затем он будет автоматически подобран Qt без каких-либо хлопот, если вы не возитесь с путями вручную, чего вам не следует делать.
4) При этом это полностью общий подход, поэтому он будет работать для любого типа SQL, если вы замените sqlite тем, который вам нужен.
person
lpapp
schedule
19.07.2014