Russian Qt Forum

Qt => Базы данных => Тема начата: Toad от Июль 31, 2013, 22:31



Название: Ошибка read access violation
Отправлено: Toad от Июль 31, 2013, 22:31
Помогите пожалуйста, ковырялся пол дня, не понимаю в чем проблема.
Итак:
на компьютере установлена СУБД Oracle x86;
Операционная система Windows x64;
для написания приложений использую Qt 4.8.4.

Компилировал драйвер для работы с Oracle при помощи:
Visual Studio Command Prompt (2010)
прописывал пути к папке libs и include
на выходе получил 4 файла - qsqloci4.dll, qsqloci4.lib, qsqlocid4.dll, qsqlocid4.lib.

Суть проблемы - возникает ошибка чтения памяти при следующем коде:
Код:
#include <QSqlDatabase>
int main()
{
    QTextStream cout(stdout);
    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    if(!db.isValid())
        return -1;

    db.setDatabaseName("XE");
    db.setUserName("UserName");
    db.setPassword("Password");
    if(!db.open())
    {
        cout << db.lastError().text();
        return -2;
    }

    db.close();
    return 0;
}

Кажется, я всё выполнил по правилам, добавил соединение с необходимым драйвером, установил имя базы, логин и пароль, а затем открыл. Последней строкой закрыл базу.

Ошибка возникает уже не в моем коде, а в qsqldatabase.cpp, в деструкторе

Код:
QSqlDatabasePrivate::~QSqlDatabasePrivate()
{
    if (driver != shared_null()->driver)
        delete driver;
}
при попытке удалить объект driver.

Собственно вопрос в том, что я не так делаю и как эту ошибку исправить?


Название: Re: Ошибка read access violation
Отправлено: Fregloin от Август 01, 2013, 16:04
первое что приходит на ум, driver уже удален кем то ранее, а указатель на него еще висит.
возможно юзаете не ту версию библиотеки, т.е. прога дебаг, а либа релиз или наоборот. у меня была такая же проблема, прога тупо летела в сегментацию изза того, что отладочная прога, а либы были релизные.


Название: Re: Ошибка read access violation
Отправлено: Toad от Август 01, 2013, 16:46
я тоже так сначала подумал, но я собирал dll как релиз версию, так и дебаг.


Название: Re: Ошибка read access violation
Отправлено: BuRn от Сентябрь 04, 2013, 11:27
Залезть глубже не пытались ? Я бы попробовал зайти в деструктор и посмотреть что там вообще происходит и что в driver , что он там пытается очистить и т.д.