Полная версия этой страницы:
Сборка Qt
Phoenix_nsk
17.3.2011, 16:23
Кто-нить пересобирал Qt?
Кто-нить пересобирал Qt без зависимостей от компилятора (Visual Studio)
Кто-нить замечал после этого какие-нить глюки?
RazrFalcon
17.3.2011, 16:33
Типа "как пересобрать в статику"?
Какие еще зависимости Visual Studio !?
Нет.
Phoenix_nsk
17.3.2011, 19:34
Нет, статика не интересует.
Зависимости от компилятора, это а-ля файлы msvc90.dll? а так же невозможность компилировать с флагом MT, только MD, что собственно и влечёт за собой эти зависимости.
Phoenix_nsk
17.3.2011, 20:20
Какая студия, какая система?
Попробуйте простой пример, создайте приложение с использованием QTreeWidget и заполните его, пусть например так:
int main(int argc, char *argv[])
{
QApplication p(argc, argv);
QTreeWidget twg;
QStringList lst;
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
lst << "Folders" << "Used space";
twg.setHeaderLabels(lst);
twg.setSortingEnabled(true);
QTreeWidgetItem *pItem = new QTreeWidgetItem (&twg);
pItem->setText(0, "Диски");
QTreeWidgetItem *a = new QTreeWidgetItem (pItem);
a->setText(0, "Арбуз");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Ананас");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Вода");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Водка");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Сода");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Елка");
a = new QTreeWidgetItem (pItem);
a->setText(0, "F");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Line");
a = new QTreeWidgetItem (pItem);
a->setText(0, "Label");
twg.sortItems(0, Qt::AscendingOrder);
twg.setItemExpanded(pItem, true);
twg.resize(220, 350);
twg.show();
return p.exec();
}
Запустите и попробуйте осуществить навигацию по дереву с использованием текстовых клавиш.
Например нажимая 'В' должен осуществиться переход на элемент "Вода".
Что произойдёт на самом деле? Как поведёт себя программа?
честно говоря, мне лень счас качать Qt, распаковывать, собирать, и далее по списку
Думаете, у меня они вечно живут? Сделал, простетил, проект в релиз отправил, отправил на свалку. Собирал сие под мобилку, багов не было замечено никаких. Студия 05 и 08 проверялись.
RazrFalcon
17.3.2011, 20:38
УМВР
Linux Ubuntu 10.10 x86
Qt из реп (4.7.0), креатор с оффсайта (2.1.0).
gcc version 4.4.5
Phoenix_nsk
17.3.2011, 20:50
А вот у меня на 7 винде идёт повреждение кучи, на XP теже dll Qt'шные всё нормуль. Собирал 4.7.1 и 4.7.2 вижак 2008, печальная ситуация в этом плане.
RazrFalcon
17.3.2011, 20:58
Цитата(Phoenix_nsk @ 17.3.2011, 19:50)
идёт повреждение кучи
?!
Phoenix_nsk
17.3.2011, 21:04
Нажимаю кнопку, должен перейти на элемент, да?
НО!
В релизе всё падает сразу.
В дебаге же происходит следующее:
Интересно то, что это происходит при одном и том же действии - нажатии клавиши, но в Qt файлах я оказываюсь порой в разных, но итог один и тот же:
ВСЁ ПРИХОДИТ ВОТ СЮДА _ASSERTE(_CrtIsValidHeapPointer(pUserData)); в dbgheap.c
/*
* If this ASSERT fails, a bad pointer has been passed in. It may be
* totally bogus, or it may have been allocated from another heap.
* The pointer MUST come from the 'local' heap.
*/
_ASSERTE(_CrtIsValidHeapPointer(pUserData));
вызов keyboardSearch("str"); тоже приводит к таким последствиям.
Становимся на _ASSERTE(_CrtIsValidHeapPointer(pUserData));
"ОС Windows имициировала точку останова в 123.exe.
Это может быть вызвано повреждением кучи и указывает на ошибку в conf_dev.exe или в одной из загруженных им DLL.
Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит 123.exe"
RazrFalcon
17.3.2011, 21:08
Попробовал и в релизе - норм. Нажимал все кнопки подряд - не падает. Странно...
а как ты собирал то все? Где что правил, с какими флагами собрал?
Phoenix_nsk
18.3.2011, 7:13
Можно собрать релиз, но флаг будет MD и будут зависимости, на чистой машине не заработает. Или надо ещё горстку dll в довесок.
Собирал по инструкции так:
Сборка Qt без зависимостей (MS Visual Studio)Конфигурировал так:
configure -debug-and-release -opensource -no-exceptions -platform win32-msvc2008 -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -no-qmake -mp -nomake demos -nomake examples
Собирал так:
nmake sub-src
-exceptions тоже как-то не помогает.
RazrFalcon
18.3.2011, 8:04
Цитата(Phoenix_nsk @ 18.3.2011, 6:13)
-platform win32-msvc2008
это не смущает?
Phoenix_nsk
18.3.2011, 12:06
Почему это должно меня смущать?
Я правлю конфиги Qt для 8 студии, конфигурирую и компилирую из-под 2008 студии, что тут не так то?
Phoenix_nsk
18.3.2011, 20:57
м?
Phoenix_nsk
19.3.2011, 18:04
АУ!!! Help me, please!
завтра попробую собрать, проверю
и да, -no-exceptions под винду не рекомендую юзать
Phoenix_nsk
19.3.2011, 22:02
Было бы очень хорошо, если бы проверили.
Да я и с исключениями и с ними - всё одна фигня.
Litkevich Yuriy
20.3.2011, 8:46
Цитата(ufna @ 19.3.2011, 23:51)
-no-exceptions под винду не рекомендую юзать
за-то с ними придётся таскать dll-ку, если это MinGW, то mingwm10.dll. У студии наверное тоже подобная есть
Phoenix_nsk
20.3.2011, 12:26
Вообще-то разговор идёт о сборке без зависимостей, так что всё нормуль, не придётся, если сделать всё по инструкции.
К тому же, сама Qt написана без использования исключений.
Но мы отошли от сути.
Проблема в том, что после пересборки возникают исключения, которые надо бы убрать.
Phoenix_nsk
20.3.2011, 19:46
ufna, ну как прошли тесты?
честно говоря, не было времени проверить, попробую завтра
Phoenix_nsk
22.3.2011, 19:31
ОК. Жду результатов.
У меня чет вообще под студию собираться не хочет, что очень странно. qmake в упор не находит. Думаю О_о
Phoenix_nsk
23.3.2011, 10:23
переменная QTDIR установлена?
Какая студия?
не, у меня вообще в сорцах Qt нет qmake'а в бине, а сборка "идет" туда смотреть, студия 2008, впервые такой бред вижу
Phoenix_nsk
23.3.2011, 20:57
А что скачал хоть?
http://qt.nokia.com/downloads/windows-cpp-vs2008Это надо. Там всё есть. Только в конце докачивает плохо, надо проверять чтоб совпадали размеры.
я собираю из исходников, как и подобает чистым сборкам
причем то ли у меня глюк, то ли что, но это очень классно работает для всех сборок, кроме этой
счас качну MSVC версию, пересоберу еек
Phoenix_nsk
24.3.2011, 16:18
Исходники? Не, я вот версию для вижака качал. И из-под вижака и надо собирать.
Да версия "для вижака" - ее перед сборкой подчистить не помешало бы, она ж скомпиленная
Потому всегда из сорцов ставлю под себя. Те же под мобилки идет только из сорцов, не зависимо через студию компилишь или нет.
поставится, сделаю билд
Phoenix_nsk
24.3.2011, 18:23
nmake confclean в смысле?
С такими флагами баг воспроизводится, ошибка в QThread раз ловится, проблема должна решаться
счас проверяю одну идею, там отпишу
Сделал в общем еще один ребилд, та же фигня. На ХР работает без проблем, надо бы багрепорт оформить
Phoenix_nsk
25.3.2011, 10:53
Да, ХР без проблем.
Эх, не писал я баг репорты никогда.
Чё там как и куда делать надо?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.