прочитал все что тут было по данной тематике но мою проблему не решило.
проект на Qt 4.7.0 + mingw под винХП
собираю mysql по такой технологии:
cd C:\MySQL\include
dlltool -d libmysql.def -D libmysql.dll -l libmysql.a -k
cd C:\Qt\qt\src\plugins\sqldrivers\mysql
qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro
mingw32-make
добавляю в pro файл
QT += core gui sql
CONFIG += release
в main файле пишу
QApplication a(argc, argv);
a.setLibraryPaths(QStringList()<<QDir(a.applicationDirPath()+"//plugins//").absolutePath());
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
if (!db.open())
{
...
}
плагин к mysql лежит в <папка экзешника>/plugins/sqldrivers/qsqlmysql4.dll
libmysql лежит возле ехешника
ну и как понимаете появляется всеми любимая ошибка Driver not loaded
смотрел в реестре ветку HKEY_CURRENT_USER\Software\Trolltech. при нормальном соединении с плагинами должно появлятся 2 записи:
OrganizationDefaults\Qt Factory Cache 4.7 и
OrganizationDefaults\Qt Plugin Cache 4.7.false с путями к плагину, у меня же создается только Qt Plugin Cache 4.7.false.
причем если докинуть, например, одбц плагин, то одбц подключается отлично и в реестре все нормально пишется, хоть на моей машине, хоть на какой, а вот именно мускул работать не хочет
пробовал различные вариации на тем:
a.setLibraryPaths(QString("./plugins/")) как с полными путями так и без...
результат такой же.
смотрел с помощью depends
никуда кроме указанных путей программа не лезет, во время выполнения пишет
Loaded "QSQLMYSQL4.DLL" at address 0x6C8C0000. Successfully hooked module.
Loaded "LIBMYSQL.DLL" at address 0x10000000. Successfully hooked module.
Loaded "WSOCK32.DLL" at address 0x71AB0000. Successfully hooked module.
DllMain(0x71AB0000, DLL_PROCESS_ATTACH, 0x00000000) in "WSOCK32.DLL" called.
DllMain(0x71AB0000, DLL_PROCESS_ATTACH, 0x00000000) in "WSOCK32.DLL" returned 1 (0x1).
DllMain(0x10000000, DLL_PROCESS_ATTACH, 0x00000000) in "LIBMYSQL.DLL" called.
GetProcAddress(0x7C800000 [KERNEL32.DLL], "InitializeCriticalSectionAndSpinCount") called from "LIBMYSQL.DLL" at address 0x1006839F and returned 0x7C80B8B9.
GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") called from "LIBMYSQL.DLL" at address 0x100660E5 and returned NULL. Error: (127).
GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") called from "LIBMYSQL.DLL" at address 0x100660F2 and returned NULL. Error: (127).
GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") called from "LIBMYSQL.DLL" at address 0x100660FF and returned NULL. Error: (127).
GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") called from "LIBMYSQL.DLL" at address 0x1006610C and returned NULL. Error: (127).
GetProcAddress(0x7C800000 [KERNEL32.DLL], "IsProcessorFeaturePresent") called from "LIBMYSQL.DLL" at address 0x10067644 and returned 0x7C80AEBA.
DllMain(0x71AB0000, DLL_PROCESS_DETACH, 0x00000000) in "WSOCK32.DLL" called.
DllMain(0x71AB0000, DLL_PROCESS_DETACH, 0x00000000) in "WSOCK32.DLL" returned 1 (0x1).
Unloaded "QSQLMYSQL4.DLL" at address 0x6C8C0000.
Unloaded "LIBMYSQL.DLL" at address 0x10000000.
Unloaded "WSOCK32.DLL" at address 0x71AB0000.
LoadLibraryW("H:\qt\plugins\sqldrivers\qsqlmysql4.dll") returned NULL. Error: (998).
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QODBC3 QODBC