Название: DLL из WinLogon не подтягивает sqldriver Отправлено: QuAzI от Июнь 16, 2011, 09:45 Сделал библиотечку, должна ловить события аля логин/включение/блокировка хоста. И ложить их в базу. Всё перекорябал, но в итоге толку не добился. В файл-лог данные пишутся и вижу
Код: Open database библиотека лежит в C:\windows\system32, где лежат и остальные нужные библиотеки, это Код: libgcc_s_dw2-1.dll Просматриваю Dependency - все библиотечки находятся. Но почему именно sqldrivers\qsqlmysql4.dll не подхватывается из WinLogon, не могу понять. С этими же библиотеками обычное графическое приложение, запущенное из юзверя, работает. Название: Re: DLL из WinLogon не подтягивает sqldriver Отправлено: Mikhail от Июнь 16, 2011, 11:03 И где е лежит директория sqldrivers?
То же в C:/WINDOWS/system32 ? Для плагинов в том числе и баз данных есть предопределенные места: QTDIR/plugins либо app_Dir/plugins Название: Re: DLL из WinLogon не подтягивает sqldriver Отправлено: QuAzI от Июнь 16, 2011, 11:28 да, директория лежит в SYSTEM32 (т.е. в директории с выполняемой библиотечкой, при этом на момент запуска это же явдяется текущей рабочей директорией). Пробовал из директории либу кидать в SYSTEM32 без поддиректории, а так же в sqldrivers закидывать все библиотеки, которые для qsqlmysql4.dll нужны. Совершенно никакой реакции
Название: Re: DLL из WinLogon не подтягивает sqldriver Отправлено: Mikhail от Июнь 16, 2011, 18:04 Вам следует внимательно изучать документацию Qt.
Ознакомтесь с wiki.crossplatform.ru "Решение проблем Вы должны всегда использовать библиотеки клиента, которые были собраны тем же компилятором, который вы используете для своего проекта. Если вы не можете получить описание источника сборки библиотеки клиента самостоятельно, попробуйте удостовериться, что предсобранная библиотека совместима с вашим компилятором, иначе вы получите множество ошибок. Некоторые компиляторы имеют инструменты для преобразования библиотек, например: Borland предоставляет инструмент COFF2OMF.EXE, для преобразования библиотек, которые были собраны в Microsoft Visual C++. Если компиляция плагина прошла успешно, но он не может быть загружен, убедитесь в том, что следующие требования выполнены: Убедитесь, что вы используете shared Qt библиотеку; вы не может использовать плагины в статической сборке. Убедитесь, что плагин в правильной директории. Для этого можно использовать QApplication::libraryPaths(), чтобы определить, где Qt ищет плагины. Убедитесь, что клиентские библиотеки СУБД доступны. Под Unix, выполните команду ldd и введите имя плагина в качестве параметра, например: ldd libqsqlmysql.so. Вы получите предупреждение, если какая-то из клиентских библиотек не найдена. Под Windows, вы можете использовать Visual Studio dependency walker. Скомпилируйте Qt с установленным QT_DEBUG_COMPONENT, чтобы получить более подробную отладочную информацию, когда загружаются плагины. Если у вас возникли проблемы с загрузкой плагинов, и вы видите ошибку вроде этой: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QMYSQL проблема вероятно в том, что плагин имеет неправильный ключ сборки. Для отладки удалите соответствующую запись в $HOME/.qt/qt_plugins_(qtversion).rc файле. После чего снова попытайтесь загрузить этот плагин, и вы получите более детальное описание ошибки." http://www.wiki.crossplatform.ru/index.php/Qt:Документация_4.3.2/sql-driver#qsqlite Драйверы БД должны быть либо в QTDIR/plugins/sqldrivers либо в app_dir/plugins/sqldrivers Название: Re: DLL из WinLogon не подтягивает sqldriver Отправлено: QuAzI от Июнь 18, 2011, 09:12 Плагин слинкован, плагин рабочий (используется в паре других приложений). Плагин ложу относительно исполняемого файла везде одинаково.
Задачу решил весьма тупо - вынес код работы с БД в отдельный exe и из DLL при событии запускаю этот exe с параметрами. Как ни крутил с qApp, QApplication, QCoreApplication, даже если драйвер показывается в списке доступных драйверов при перечислении и лежит правильно, всё равно он не подхватывается из DLL. У меня Qt SDK 2010.05 (может быть в какой-то другой версии это и не так). |