Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сборка Qt
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
Phoenix_nsk
Кто-нить пересобирал Qt?
Кто-нить пересобирал Qt без зависимостей от компилятора (Visual Studio)
Кто-нить замечал после этого какие-нить глюки?
RazrFalcon
Типа "как пересобрать в статику"?
Какие еще зависимости Visual Studio !?
Нет.
Phoenix_nsk
Нет, статика не интересует.
Зависимости от компилятора, это а-ля файлы msvc90.dll? а так же невозможность компилировать с флагом MT, только MD, что собственно и влечёт за собой эти зависимости.
ufna
да
да
нет
Phoenix_nsk
Какая студия, какая система?
Попробуйте простой пример, создайте приложение с использованием 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();
}


Запустите и попробуйте осуществить навигацию по дереву с использованием текстовых клавиш.
Например нажимая 'В' должен осуществиться переход на элемент "Вода".
Что произойдёт на самом деле? Как поведёт себя программа?
ufna
честно говоря, мне лень счас качать Qt, распаковывать, собирать, и далее по списку :) Думаете, у меня они вечно живут? Сделал, простетил, проект в релиз отправил, отправил на свалку. Собирал сие под мобилку, багов не было замечено никаких. Студия 05 и 08 проверялись.
RazrFalcon
УМВР
Linux Ubuntu 10.10 x86
Qt из реп (4.7.0), креатор с оффсайта (2.1.0).
gcc version 4.4.5
Phoenix_nsk
А вот у меня на 7 винде идёт повреждение кучи, на XP теже dll Qt'шные всё нормуль. Собирал 4.7.1 и 4.7.2 вижак 2008, печальная ситуация в этом плане.
RazrFalcon
Цитата(Phoenix_nsk @ 17.3.2011, 19:50) *
идёт повреждение кучи

?!
Phoenix_nsk
Нажимаю кнопку, должен перейти на элемент, да?
НО!
В релизе всё падает сразу.
В дебаге же происходит следующее:
Интересно то, что это происходит при одном и том же действии - нажатии клавиши, но в 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
Попробовал и в релизе - норм. Нажимал все кнопки подряд - не падает. Странно...
ufna
а как ты собирал то все? Где что правил, с какими флагами собрал?
Phoenix_nsk
Можно собрать релиз, но флаг будет 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 тоже как-то не помогает. :rolleyes:
RazrFalcon
Цитата(Phoenix_nsk @ 18.3.2011, 6:13) *
-platform win32-msvc2008

это не смущает?
Phoenix_nsk
Почему это должно меня смущать?
Я правлю конфиги Qt для 8 студии, конфигурирую и компилирую из-под 2008 студии, что тут не так то?
Phoenix_nsk
м?
Phoenix_nsk
АУ!!! Help me, please!
ufna
завтра попробую собрать, проверю

и да, -no-exceptions под винду не рекомендую юзать
Phoenix_nsk
Было бы очень хорошо, если бы проверили.
Да я и с исключениями и с ними - всё одна фигня.
Litkevich Yuriy
Цитата(ufna @ 19.3.2011, 23:51) *
-no-exceptions под винду не рекомендую юзать
за-то с ними придётся таскать dll-ку, если это MinGW, то mingwm10.dll. У студии наверное тоже подобная есть
Phoenix_nsk
Вообще-то разговор идёт о сборке без зависимостей, так что всё нормуль, не придётся, если сделать всё по инструкции. ;)
К тому же, сама Qt написана без использования исключений. :wink2:

Но мы отошли от сути.
Проблема в том, что после пересборки возникают исключения, которые надо бы убрать.
Phoenix_nsk
ufna, ну как прошли тесты?
ufna
честно говоря, не было времени проверить, попробую завтра :(
Phoenix_nsk
ОК. Жду результатов.
ufna
У меня чет вообще под студию собираться не хочет, что очень странно. qmake в упор не находит. Думаю О_о
Phoenix_nsk
переменная QTDIR установлена?
Какая студия?
ufna
не, у меня вообще в сорцах Qt нет qmake'а в бине, а сборка "идет" туда смотреть, студия 2008, впервые такой бред вижу
Phoenix_nsk
А что скачал хоть?
http://qt.nokia.com/downloads/windows-cpp-vs2008
Это надо. Там всё есть. Только в конце докачивает плохо, надо проверять чтоб совпадали размеры.
ufna
я собираю из исходников, как и подобает чистым сборкам :) причем то ли у меня глюк, то ли что, но это очень классно работает для всех сборок, кроме этой :)

счас качну MSVC версию, пересоберу еек
Phoenix_nsk
Исходники? Не, я вот версию для вижака качал. И из-под вижака и надо собирать.
ufna
Да версия "для вижака" - ее перед сборкой подчистить не помешало бы, она ж скомпиленная

Потому всегда из сорцов ставлю под себя. Те же под мобилки идет только из сорцов, не зависимо через студию компилишь или нет.

поставится, сделаю билд
Phoenix_nsk
nmake confclean в смысле?
ufna
С такими флагами баг воспроизводится, ошибка в QThread раз ловится, проблема должна решаться

счас проверяю одну идею, там отпишу
ufna
Сделал в общем еще один ребилд, та же фигня. На ХР работает без проблем, надо бы багрепорт оформить
Phoenix_nsk
Да, ХР без проблем.
Эх, не писал я баг репорты никогда. :rolleyes: -_- Чё там как и куда делать надо?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.