Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: v01d от Апрель 01, 2011, 10:19



Название: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 10:19
Скомпилировал проект Qt в Win7 на других Win7 все отлично работает.
Решил проверить на WinXP и вот получаю такого рода сообщение - Ошибка при инициализации приложения 0xc0150002
как собрать проект что бы он работал и на XP?


Название: Re: Кроссплатформенность QT ;D
Отправлено: Пантер от Апрель 01, 2011, 10:26
Компилятор какой? Студийный, небось?


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 10:39
Компилятор какой? Студийный, небось?
mingw


Название: Re: Кроссплатформенность QT ;D
Отправлено: Пантер от Апрель 01, 2011, 10:44
Либы все положил? Что из себя представляет прога и что линкует?
Делаешь дебажную версию и гонишь ее под gdb на ХРюшной машине.


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 11:13
Либы все положил? Что из себя представляет прога и что линкует?
Делаешь дебажную версию и гонишь ее под gdb на ХРюшной машине.
Прога использует xml, network, crypto плагин
гуи и коре все кидается в папку как и на машине с win7, еще раз замечу программа работает на других win7 на которых не стоит qt
а вот на winxp получаю ошибку
при помощи depends смотрел библиотеки скопировал все что нужно ему было из win7
запускаться стала часть приложения, после определенных действий падает с ошибкой
инструкция по адресу 0x64428bb4 обратилась к памяти по адресу 0x00000000 память не может быть read
программа падает работая с qca либо qnetwork


Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 01, 2011, 12:09
Соберайте все на WinXP. может оно там пр сборке привязалось к каким-либо "чисто семерочным" библиотекам? Вы кастати в своем проекте какие там API-функции не используете?
 
Это-ж виндоус, радуйтесь что обратная совместимость хоть как-то сохраняется... а вы совместимость "при даунгрейде" хотите))) это же виндоус! ;)

У меня немногим другая ситуация. - Собираю на WinXP - под Windows7 работает, под Win2000 - нет.


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 12:33
на сколько я знаю opera написана на Qt и инстялятор для windows у нее 1 на все версии
никакой win api не используется, только qt


Название: Re: Кроссплатформенность QT ;D
Отправлено: Пантер от Апрель 01, 2011, 12:37
1. Opera не на Qt.
2. делай дистр на XP и он запустится под всеми более старшими версиями винды (ну, практически).


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 12:58
1. Opera не на Qt.
2. делай дистр на XP и он запустится под всеми более старшими версиями винды (ну, практически).
спасибо за ответы)

не знаете почему при отладке в eclipse пишет not found source for main?
но пройдя дебагером дальше когда вызывается уже мой сppшник с классом он его подключает, а вот main функцию он не видит
может можно как то явно указать путь до main.cpp


Название: Re: Кроссплатформенность QT ;D
Отправлено: maint от Апрель 01, 2011, 13:14
Скомпилировал проект Qt в Win7 на других Win7 все отлично работает.
Решил проверить на WinXP и вот получаю такого рода сообщение - Ошибка при инициализации приложения 0xc0150002
как собрать проект что бы он работал и на XP?
это вопрос совместимости винды. Не зря в семерке появился режим совместимости с ХР, фактически виртуальная машина. А уж наоборот, работать уж точно не обязана сборка


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 13:26
мне интересно узнать как писать программы что бы они работали как, opera firefox и т.д. что бы не нужно было по 1 версии под каждый windows, как такого можно добиться?


Название: Re: Кроссплатформенность QT ;D
Отправлено: Пантер от Апрель 01, 2011, 13:49
Вот найдешь багу, из-за которой у тебя все падает, исправишь ее, тогда падать не будет.


Название: Re: Кроссплатформенность QT ;D
Отправлено: panAlexey от Апрель 01, 2011, 13:49
2. делай дистр на XP и он запустится под всеми более старшими версиями винды (ну, практически).
Пусть делает дистр на win 2000 по такой логике : )


Название: Re: Кроссплатформенность QT ;D
Отправлено: Пантер от Апрель 01, 2011, 13:50
panAlexey, вполне нормальное решение.


Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 01, 2011, 13:53
это вопрос совместимости винды. Не зря в семерке появился режим совместимости с ХР, фактически виртуальная машина. А уж наоборот, работать уж точно не обязана сборка
во! идея. Путсть автор топика проводит сборку под командной строкой, запущенной "в режиме совместимости" ))))
ну или Qt Creator запустит "в режиме совместимости"? может и "ошибка" при запуске под хренью исчезнет?

потому что имхо, тут уже не вопрос о кроссплатформенности QT, - это вопрос совместимости бинарных сборок, программы и конкретных версий виндоус.
А этого Qt и не должен гарантировать.

_____________________________________________________________

Qt обеспечивает кроссплатформенность исходников - причем в том смысле, что вы можете ваши исходники без переработки собрать под разными осями, и он это успешно обеспечивает.

А вот будет ли запускаться собранный бинарник под старыми версиями венды, или даже например под вайном - этого никто не гарантирует. Это тоже самое, что и например требовать что бы бинарное представление STL-типов было одно и то-же у разных компиляторов. или что бы бинарник собранный для одного дистрибутива линукс, работал под другим дистрибутивом - он же может, но не обязан)

 >:( предлагаю топик переобозвать, потому что своим названием он смеет объявлять что Qt дкскать "не кроссплатформенен", потому что бинарные сборки не совместимы с теми, что нужны для "некоторых" модификаций ОС, что в корне не верно  ;)

анафему автору за заблуждения пока объявлять не будем  :)



Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 01, 2011, 14:24
По топику: исходя из написанного на сайте граблепроизводителя по поводу 0xc0150002 - http://support.microsoft.com/kb/822520 , предлагаю автору обновить сервис пак на венде, на которой он проверяет "кроссплатформеность".


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 01, 2011, 16:22
По топику: исходя из написанного на сайте граблепроизводителя по поводу 0xc0150002 - http://support.microsoft.com/kb/822520 , предлагаю автору обновить сервис пак на венде, на которой он проверяет "кроссплатформеность".

обновлял не помогло


Название: Re: Кроссплатформенность QT ;D
Отправлено: mitrich от Апрель 02, 2011, 12:40
при помощи depends смотрел библиотеки скопировал все что нужно ему было из win7
Ничего лишнего случаем не взял (msvcrt.dll какой-нибудь и т.д)? Что конкретно и откуда (неужто из системного каталога винды?) ты брал?

По поводу советов собирать на XP/2000: С чего бы тот же самый компилятор с теми же идентичными либами и хидерами (которые все с ним поставляются, в винде нет никаких системных *.lib/lib*.a/*.h) будет давать различный бинарник? Если в программе нет никаких #define WINVER ***, #ifdef ***, либы Qt также не пересобирались с изменениями то результат должен быть байт-в-байт идентичным.


Название: Re: Кроссплатформенность QT ;D
Отправлено: kdm от Апрель 02, 2011, 13:00
Офф.: Да что вы так накинулись. Человек может не оч. понял, что значит кроссплатформенность :)


Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 02, 2011, 18:08
а не слабо ли аввтору выложить пример софтины которую он собирает по семеркой и "не может запустить" по вихренью? или это у него с любым софтом даже типа хелловорда?

и какой у вас там сервис пак номер под винхренью?


Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 02, 2011, 18:29
Ничего лишнего случаем не взял (msvcrt.dll какой-нибудь и т.д)? Что конкретно и откуда (неужто из системного каталога винды?) ты брал?
вот про импорт msvcrt.dll :: http://www.prog.org.ru/index.php?topic=11664.msg72132
Цитировать
msvcrt - это с рантайм для компиляторов MS. для разных компиляторов он разный:
6 - msvcrt, 7 - msvcr70, 7.1 - msvcr71 8.0 - msvcr80 и так далее.
Mingw не имеет своего рантайм а использует MS-овский.
По умолчанию msvcrt - как самый распространённый.

но это было 2 года назад... что сейчас - недо проверить....

но уж очень проблемы автора мне напоминают http://ru.wikipedia.org/wiki/DLL_hell

Давайте конкретнее по файлам: что у авора в зависимостях и что и откуда он копировал?
и что у зависимостях у тех библиотек которые он копировал?
______________________________________________
upd:
смотрел я у себя сейчас что там у меня в моих софтинах из зависимостей. смотрел с помошью http://ru.wikipedia.org/wiki/Dependency_Walker

значит что й меня первыми пунктами? сразу от моего екзешика?: первые 3 пункта. kernel32.dll, mingwm10.dll, msvcrt.dll ....

и что получается? - программа при переносе из винсем в хрень - должна нормально работать с другим kernel32.dll ? моя вот софтина - собранная под хренью - под win2k даже не стартует)))

мой опыт подсказывает мне (да и думаю согласитесь со мной), что ждать от скомпилённого бинарника, что он будет нормально работать с подсунутой библиотекой другой версии - да ещё и предыдущей - гм... несколько наивно... о причинах, надеюсь раскажут более опытные коллеги, которые в деталях знают как происходит вызов функций библиотек, что производится при сборке/линковке и т.п. (кстати - детали расскажите? мне интересно)
это ещё и к вопросу mitrich озвученному выше - полагаю бинарники при сборке с разными версиями сторонних библиотек таки будут разными... не?

kernel32.dll надеюсь автор не стал тащить с собой из семерки в хрень? да впрочем даже если притащить, то не стоит ждать что оно будет работать нормлаьно...


потому, собственно топик автора предлагаю закрыть, из-за самой порочности попытки собрать программу под win7 и ждать что она будет работать под winXP - да ещё и обвинять в том что раз не работает - то это Qt финоват...  ;D


Название: Re: Кроссплатформенность QT ;D
Отправлено: ufna от Апрель 02, 2011, 20:33
Собираю под семеркой, на ХР отлично работает. Что я делаю не так? :)


Название: Re: Кроссплатформенность QT ;D
Отправлено: Denjs от Апрель 02, 2011, 23:38
Собираю под семеркой, на ХР отлично работает. Что я делаю не так? :)
блин... ну как дети ))) вы "делаете неправильно задавая вопрос ЧЯДНТ"!

... детали, детали, детали... ГДЕ?!
 я бы сказал что вам лично повезло, но давайте в конце концов собирать статистику и смотреть что у кого не так?!

полагаю для начала хватит этого:
1) Конкретные версии обоих вендовозов в студию. вид, сервис пак, версия... из свойств моего компьютера думаю будет достаточно.
+1.5) установлены ли на исходной машине и на ХРени всякие ".NET Framework Version 2.0 Redistributable Package" и прочее?

2) на всякий случай - версию QtSDK тоже дайте...
2.2) как запускается сборка ПО (креатор работает как обычная совтина или "в режиме совместимости"? окружение сборки какое? или из консоли собираете? )
2.3) версия компилятора (minGw или студийный? )

3) думаю список зависимостей который показал Dependency Walker (http://dependencywalker.com/). Думаю, если сохраните из него .dwi файл - будет достаточно.
3.5) версии KERNEL32.DLL и MSVCRT.DLL под win7 и winxp - это думаю надо будет напечатать руками,просмотрев свойства в Dependency Walker.

соберите статистику? вы, ufna и вы, v01d тоже.

вот когда себерем данные - сравним - будем думать что у кого и почему не работает и что сделать.


Название: Re: Кроссплатформенность QT ;D
Отправлено: ufna от Апрель 03, 2011, 11:33
1. Писал под вистой, что без SP1, что с ним - все на ХР работает на ура.
Пишу теперь под семеркой, проф. версия, что без SP1 была, что теперь с SP1. Все работает на ура.
.NET'ами не гружусь, тупо последние всегда.

Код:
------------------
System Information
------------------
Time of this report: 4/3/2011, 12:21:14
       Machine name: ALYAMKIN-SERVER
   Operating System: Windows 7 Профессиональная 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_rtm.101119-1850)
           Language: Russian (Regional Setting: Russian)
System Manufacturer: Supermicro
       System Model: X8DTG-QF
    DirectX Version: DirectX 11
     DxDiag Version: 6.01.7601.17514 32bit Unicode

2. QtSDK - ранее не было, от 4.4 версии (если не ранее, не помню) сидел на висте, с 4.5/4.6 и теперь 4.7 - семерка. Сейчас QtSDK которая сама обновляется, хз какая версия.
Креатор как обычная софтина и студия как обычная софтина. Студией под вистой билды делал, счас под семеркой только для винце собираю. Для десктопа мингв.

3. http://ufna.ru/upload/soft/temp/NovaBook.dwi

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


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 06, 2011, 08:35
1)
Microsoft Windows 7 Ultimate (EN)
6.1.7600 N/A Build 7600
установлен Microsoft Framework 4 и еще Microsoft Visual 2008 C++ Redistributable

Microsoft Windows XP Professional (RUS)
5.1.2600 Service Pack 3 сборка 2600
сборка из коробки, в панель управления>установка программа
не наблюдается отдельно установленных каких либо фреймворков

2)
Qt 4.7.2
E:\Perl64\site\bin;E:\Perl64\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;E:\MySQL\bin;E:\Qt472\minGW\bin;E:\Qt472\qt\bin;E:\Python27
2.1)
комплируется все из под Eclipse
2.2)
компилятор из Qt 4.7.2 инсталлера
3.) http://ifolder.ru/22808279


Название: Re: Кроссплатформенность QT ;D
Отправлено: v01d от Апрель 06, 2011, 09:21
было бы здорово еще увидеть .pro файлы
Код:
TEMPLATE = app
TARGET = app
QT += core \
    gui \
    xml \
    xmlpatterns \
    network
HEADERS += app.h
SOURCES += app.cpp \
    main.cpp
FORMS += app_msg.ui \
    app_about.ui \
    app_adpass.ui \
    app_inpass.ui \
    app_option.ui \
    app.ui
LIBS += -lssleay32 \
    -llibeay32
CONFIG += crypto \
    qt
RESOURCES = resource.qrc
RC_FILE = app.rc