Russian Qt Forum
Ноябрь 23, 2024, 12:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Qt + ODBC = Driver not loaded  (Прочитано 26787 раз)
Mixolap
Гость
« Ответ #15 : Ноябрь 29, 2006, 17:09 »

Поставь нормальную версию, если тебя заказчик не ограничивает конечно.
http://www.trolltech.com/download?target=http://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-4.2.1-mingw.exe
Записан
Sidrian
Гость
« Ответ #16 : Ноябрь 29, 2006, 17:41 »

У меня есть опен сорс версия но мне не очень хочется разбираться с тем, как все это шастие к CodeBlock прикрутить(я знаю что на эту тему есть кучу тредов, но простого негеморойного пути я нигде не нашел). И я не думаю что просто кину этот же сорс в mingw и все заработает. Или я не прав?
Записан
Sidrian
Гость
« Ответ #17 : Ноябрь 30, 2006, 12:01 »

Неужели никто не может подсказать в чем проблема с таким длл? Если ктото поможет на примере такой простой функции, тому мегареспект Улыбающийся
Код:

extern "C"  __declspec(dllexport) int __stdcall connectDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
      db.setDatabaseName("qttest");
db.setUserName("qttest");
db.setPassword("pwd");
      if (!db.open())
        return 0;
return 1;
}

Очень нужно!
ЗЫ Если ре хотите колупаться с QODBC поставьте место него QSQLITE. В ДЛЛ при любом выборе драйвера пишет "Driver not loaded" хоть убейся.
Записан
Tonal
Гость
« Ответ #18 : Ноябрь 30, 2006, 12:55 »

А QApplication у тебя когда создаёться?
Записан
Sidrian
Гость
« Ответ #19 : Ноябрь 30, 2006, 14:40 »

Для уверености написал таку вот дурню в ДЛЛ:
Код:

bool WINAPI DllMain(HANDLE hinstDll, DWORD dwReason, LPVOID lpvReserved)
{
int argc = 2; char *argv[2] = { "test", "app" };
switch (dwReason) {
case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH:
QCoreApplication(argc, argv);
return true;
break;
default:
return true;
break;
}
return false;
}

Не помогает.
Записан
Dendy
Гость
« Ответ #20 : Ноябрь 30, 2006, 16:25 »

Естественно не помогает - QCoreApplication сразу же убивается. Даже не при вьІходе из DllMain, а после отработки конструктора. Создавай его в куче.

Тут такой вопрос вьІлезает, тьІ ету DLL только из Qt программ собираешься юзать или из любой?
Записан
Sidrian
Гость
« Ответ #21 : Ноябрь 30, 2006, 18:51 »

В том то и идея. Мне нужно вызывать эту функцию из С кода. Я делаю библиотеку для работы с БД, но колупаца с ODBC не хотелось (правда после знакомства с Qt начинает хотеться Улыбающийся. Меня впринципе предупреждали что у Qt много своих мрачных приколов, но я думал что не все так плохо...

добавлено спустя 1 час 57 минут:

 Проблема отпала сама собой благодаря стиранию Qt и установке SQLAPI++ Улыбающийся
Записан
Tonal
Гость
« Ответ #22 : Декабрь 01, 2006, 08:37 »

Цитата: "Sidrian"
Для уверености написал таку вот дурню в ДЛЛ:
Код:

bool WINAPI DllMain(HANDLE hinstDll, DWORD dwReason, LPVOID lpvReserved)
{
int argc = 2; char *argv[2] = { "test", "app" };
switch (dwReason) {
case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH:
QCoreApplication(argc, argv);
return true;
break;
default:
return true;
break;
}
return false;
}

Не помогает.

Класс!
Берём учебник, читаем про локальные переменные.

Цитата: "Sidrian"
у Qt много своих мрачных приколов

Самый мрачный прикол Qt, это то, что надо знать С++!
А с таким знанием которое ты показал - действительно, Qt никуда не годиться.
Как и любые другие библиотеки для С++! ;-)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 21.