Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: slip от Январь 31, 2013, 20:31



Название: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Январь 31, 2013, 20:31
Пытаюсь отобразить QSplashScreen с прозрачным png на чистой (без Qt и VS) Windows XP следующим образом:

Код:
QSplashScreen *splash=new QSplashScreen(QPixmap(":/images/splash.png"));
splash->show();

на второй строчке выскакивает ошибка "обнаружена ошибка. Приложение будет закрыто".
какой-либо дополнительной информации в сообщении больше нет.

все зависимости (насколько я могу судить по dependency walker) удовлетворены и, если строчку закомментировать, то программа отлично работает.
если строчку не комментировать, то программа отлично работает на чистой (без Qt и VS) Windows 7.

Подскажите, пожалуйста, что может вызывать подобную ошибку в Windows XP, и каким образом можно было бы ее устранить.

Заранее благодарю.


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Old от Январь 31, 2013, 20:36
Подскажите, пожалуйста, что может вызывать подобную ошибку в Windows XP, и каким образом можно было бы ее устранить.
А плагины для загрузки изображений на XP скопированы?


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Январь 31, 2013, 20:41
Нет. Я qt не собирал, а в распространяемой на qt-project версии нет плагина для отображения png (только gif, ico, jpeg, mng, svg, tga, tiff, wbmp). И, судя по тому, что иконки в программе (тоже png) показываются нормально, вероятно, это не нужно...

но возможно, конечно, я ошибаюсь... его нужно собирать?


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Old от Январь 31, 2013, 20:45
И, судя по тому, что иконки в программе (тоже png) показываются нормально, вероятно, это не нужно...
но возможно, конечно, я ошибаюсь... его нужно собирать?
Если png нормально читается, то вряд-ли  дело не в этом.


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Bepec от Январь 31, 2013, 21:34
А стек посмотреть после падения религия не позволяет?

Поставьте там точку остановки и идите внутрь всех функций и локализуйте проблему.

PS у вас могучий инструмент отладки в руках, а вы им не пользуетесь?


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Январь 31, 2013, 23:02
спасибо, я попробую... очень не хотелось ставить qt и vs, т.к. на рабочую машинку нет возможности поставить, а у меня установленной xp нет... придется ставить на виртуалку, хоть это и длительный процесс...

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


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Bepec от Февраль 01, 2013, 07:19
Виртуальные машинки вам в помощь.  Ставится всё за час  - полтора и решается мучающая вас проблема :) (или вы ещё больше огорчитесь :D )


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Февраль 01, 2013, 11:17
ну ясности мне дебаггер не прибавил совсем :(

выяснил следующее:
1. проблема только с png. если картинку заменить на jpg, то все работает.

2. ошибку пишет следующую: Unhandled exception at 0x00000000 in MPARegistry.exe: 0xC0000005: Access violation reading location 0x00000000

и останавливает выполнение на 55 строке файла malloc.c (закрывающая фигурная скобка в функции "__forceinline void * __cdecl _heap_alloc (size_t size)")


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Bepec от Февраль 01, 2013, 11:20
Ппц ) Как ты много ясности добавил :)

У тебя идёт обращение по невалидному указателю.  Видимо ты что-то там накодил до вызова сплеш скрина :)

Ты попробуй убрать всё лишнее :) локализуй проблему:D


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Февраль 01, 2013, 11:37
это в самом начале :( , там нет ничего до этого:

Код:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPixmap SplashPixmap(":/images/catalogue.png");
QSplashScreen *splash=new QSplashScreen(SplashPixmap);
splash->show(); //тут вылетает access violation

при этом если png заменить на jpg все работает отлично...


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Bepec от Февраль 01, 2013, 13:43
Попробуйте и pixmap создавать динамически (через new).


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Февраль 01, 2013, 15:22
попробовал... ошибка та же самая, в том же месте :(


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Alex Custov от Февраль 01, 2013, 15:26
попробовал... ошибка та же самая, в том же месте :(

А винда родная, не сборка какая-нибудь?


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Февраль 01, 2013, 15:51
винда, лицензионная, со всеми обновлениями...
меня больше всего смущает, что работает jpg (в любой системе) и png (в Windows 7)...
то есть логично предположить, что дело не совсем в коде... o_O и можно было бы предположить, что дело именно в поддержке png, но тот же png в качестве иконок работает в WinXP нормально, то есть все иконки отображаются...


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Alex Custov от Февраль 01, 2013, 16:46
скинь сюда заархивированный каталог со всем тем, что ты запускаешь на XP. Чтобы могли распаковать и сразу запустить. И проект с исходниками.

P.S. Я не спец по VS, но может нужно на XP поставить VS Redistributable 2010?


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: Bepec от Февраль 01, 2013, 17:57
Не, прога бы не запустилась без среды :) А раз проходит, значит всё для запуска есть :)


Название: Re: [QT5, VS2010] QSplashScreen в чистой Windows XP рушит программу
Отправлено: slip от Февраль 01, 2013, 20:54
VS Redistributable 2010 (и 2009) ставится автоматически при установке VS2010... но на XP все равно не работает... так что дело не в нем.

исходник:
http://ezhik-s-koshkoy.ru/source.7z

откомпилированный релиз:
http://ezhik-s-koshkoy.ru/compiled-w32.7z