Russian Qt Forum

Qt => Общие вопросы => Тема начата: neosapient от Октябрь 19, 2009, 10:07



Название: Проблемы с time_t в VC9
Отправлено: neosapient от Октябрь 19, 2009, 10:07
Здравствуйте.

Раньше писал под Visual Studio 7, которая более дружелюбно относилась к 32-х битной переменной time_t.
Но жизнь заставила перейти на Visual Studio 9. Одной из головных болей, которые при этом появились, является постаянная ошибка компилятора, при использовании переменной time_t.

Подчас, проблему можно решить, используя дерективу #define _USE_32BIT_TIME_T в начале файлов заголовков или в настройке проекта.

Но такой подход оказался неэффективен, когда я решил изучить пример examples\animation\animatedtiles  
(всего один main.cpp файл и набор  картинок) из QT4.6 + kinetic
Скопировал папку с примером на рабочий стол. Пересобрал проект командой
Цитировать
qmake -t vcapp
.

Запускаю компиляцию проекта, получил ошибку
Цитировать
error C2664: 'errno_t _wctime64_s(wchar_t *,size_t,const __time64_t *)' : cannot convert parameter 3 from 'const __time32_t *' to 'const __time64_t *'

Пробовал вставлять #define _USE_32BIT_TIME_T в настройках проекта и среди #include-ов во всех сочетаниях, но это не помогло.


Я уверен, что задачу решить можно, ведь при сборке QT4.6 + kinetic, все примеры собрались. Но не пойму, как подружить VC9 с 32-х разрядной time_t ?

(проблема возникает в файле wtime.inl, который находиться внутри VC9: возможно стоит перекомпилировать QT4 с определенными ключами, вопросс какими?)


Название: Re: Проблемы с time_t в VC9
Отправлено: neosapient от Октябрь 19, 2009, 19:15
Попробовал пересобрать саму QT - теперь и при работе configure вылезает такая же ошибка

Цитировать
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\wtime.inl(50) : error C2664: '_wctime64' : cannot convert parameter 1 from 'const __time32_t *' to 'const __time64_t *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\wtime.inl(56) : error C2664: 'errno_t _wctime64_s(wchar_t *,size_t,const __time64_t *)' : cannot convert parameter 3 from 'const __time32_t *' to 'const __time64_t *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
Building qmake failed, return code 2

Возможно проблема в глобальных настройках компилятора ?
 ???


Название: Re: Проблемы с time_t в VC9
Отправлено: crackedmind от Октябрь 19, 2009, 21:28
Честно говоря похожих проблем не было.

Это "C:\Program Files (x86)\" говорит, что у вас 64-битная Виста или что-то такое :) У вас какая версия компилятора то работает х86 или х64?


Название: Re: Проблемы с time_t в VC9
Отправлено: neosapient от Октябрь 20, 2009, 11:09
Это "C:\Program Files (x86)\" говорит, что у вас 64-битная Виста или что-то такое :) У вас какая версия компилятора то работает х86 или х64?
Да, 64-битная Виста.
Собираю с ключем х86.
-----------------------

Поиск по яндексу и гуглу ничего не дал, в смысле вообще ничего. Ни кто ранее не писал о подобных ошибках. Сделал вывод, что студия "рухнула", хотя я её поставил две недели назад.

В итоге вчера в конце дня снес VC9 через установку удаление, подчистил папки, проверил реестр на наличие подозрительно мусора (мусор остался, но никаких "волшебных" ключей не нашел). Затем установил студию с нуля.

Собраная ранее QT4, boost и openssl подхватились сразу.  :)

Тема закрыта.