QSqlQuery выдает исключение в модуле dllC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 QSqlQuery выдает исключение в модуле dll

Сообщение Anonymous »

В моем решении есть 3 разных проекта:
  • Interops (LIB)
  • XModule (DLL, включает QWidget) {с использованием Interops
  • Main App (EXE) {с использованием Interops, XModule
Я создал класс регистратора в проекте Interops как «LogManager» и он подключается к MySQL для периодической записи журналов в базу данных.
Использование класса «LogManager» в «Основном приложении» работает нормально, но в XModule (который также используется в «Основном приложении») во время выполнения QSqlQuery выдаются странные исключения, и его невозможно отладить. Я думаю, что динамически подключаемая DLL не может загрузить драйверы SQL Qt, но я не знаю, как это исправить.
Кстати, все проекты используют модуль SQL Qt. Спасибо.

Два примера функции: которые работают в MainApp, но не в XModule. Вызывает строку QString val = q.value(0).toString(); в функции getLastDbLogDate(). Также я передаю указатель экземпляра LogManager повсюду, который находится в MainApp.
bool LogManager::connect()
{
if(!QSqlDatabase::contains(LOG_DB_NAME))
{
QSqlDatabase db = QSqlDatabase::addDatabase(mDriver, LOG_DB_NAME);
if(!db.isValid())
return false;

db.setHostName(mHost);
db.setPort(mPort);
db.setDatabaseName(mDb);
db.setUserName(mUser);
db.setPassword(mPw);

return db.open();
}

return true;
}

QDateTime LogManager::getLastDbLogDate()
{
if(!connect())
QDateTime();

QSqlQuery q("SELECT MAX(logTime) FROM tbl_logs", QSqlDatabase::database(LOG_DB_NAME));
while (q.next())
{
QString val = q.value(0).toString();
return QDateTime::fromString(val, LOG_DATE_SQL_FORMAT);
}

return QDateTime();
}

звоню как везде:
mLogMgr->getLastDbLogDate();


Подробнее здесь: https://stackoverflow.com/questions/325 ... dll-module
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»