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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDataStream  (Прочитано 3058 раз)
Winstrol
Гость
« : Март 02, 2007, 16:06 »

Перешел с Qt 3.3.2 на 3.3.8 (Заранее оговорюсь,что включил опции QT_LARGEFILE_SUPPORT и QT_ABI_QT4)

Такой код падает на строке aaa.close();
Код:

{
QFile aaa("aaaa");
aaa.open(IO_ReadWrite | IO_Append | IO_Truncate);
QDataStream bbb;
bbb.setDevice(&aaa);
//bbb.unsetDevice();
aaa.close();
}

А если раскомментировать unsetDevice, то работает. А я его никогда раньше не вызывал - все работало.  Почему так происходит? Я не вразумлю никак.

В качестве пищи для размышления
Код:

void QDataStream::setDevice(QIODevice *d )
{
    if ( owndev ) {
delete dev;
owndev = FALSE;
    }
    dev = d;
}
void QDataStream::unsetDevice()
{
    setDevice( 0 );
}


Переменная owndev всюду ==  false

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

 Вопрос снят.
Записан
zabivator
Гость
« Ответ #1 : Март 02, 2007, 17:44 »

Как решили проблему?
Записан
Winstrol
Гость
« Ответ #2 : Март 02, 2007, 18:17 »

Цитата: "zabivator"
Как решили проблему?

Дефайны QT_LARGEFILE_SUPPORT и QT_ABI_QT4 (я только их опцией  configure задал при перекомпиляции qt), оказалось, надо либо вручную добавлять к каждому проекту, либо раз и навсегда модифицировать qmake.conf. Проблемы возникали из-за некорректной линковки.

добавлено спустя 23 минуты:

 
Цитата: "zabivator"
Как решили?

Если Вы спрашиваете, как решил проблемы с некоррекной линковкой, то, как уже сообщал,  поправил qmake.conf
Код:

DEFINES += UNICODE WIN32 [b]QT_LARGEFILE_SUPPORT QT_ABI_QT4 [/b]

Шляпа в том, что неверные заголовочные файлы(где QFile::offset=int) не приводили к ошибкам линкера, но исполнямый файл оказывался безнадежно испорченым.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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