Russian Qt Forum

Qt => Общие вопросы => Тема начата: The_Immortal от Февраль 27, 2013, 04:56



Название: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 27, 2013, 04:56
Ребят, прошу простить, что задаю настолько глупый вопрос, но все же: для того, чтобы использовать на Windows'е приложение, созданное под QtCreator на Linux'е, необходимо на винду скачать собственно сам фреймворк Qt (5.0.1)?

Если этого делать не надо, то поясните, пожалуйста, в каком случае надо скачивать сам фреймворк Qt, а в каком QtCreator?


Благодарю!


Название: Re: Вопрос про кроссплатформенность
Отправлено: maint от Февраль 27, 2013, 06:33
поскольку приложение надо собрать из исходных текстов, следовательно нужен и фрэймворк


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 27, 2013, 11:03
А для запуска собранного приложения под Windows надо отдельно скачивать фреймворк?


Название: Re: Вопрос про кроссплатформенность
Отправлено: Bepec от Февраль 27, 2013, 12:28
Для сборки - фреймворк.
Для собранного приложения - только dll необходимы.


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 27, 2013, 12:53
Bepec, т.е. для сборки одного QtCreator недостаточно будет?


Название: Re: Вопрос про кроссплатформенность
Отправлено: ViTech от Февраль 27, 2013, 13:08
т.е. для сборки одного QtCreator недостаточно будет?
Недостаточно. Для сборки нужны библиотеки и их исходники. Выбирайте нужную версию здесь: http://qt-project.org/downloads.


Название: Re: Вопрос про кроссплатформенность
Отправлено: Bepec от Февраль 27, 2013, 13:09
Фреймворк это библиотеки + исходники + IDE (QtCreator).


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 27, 2013, 13:15
ViTech,
Выбирайте нужную версию здесь: http://qt-project.org/downloads.

- Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)
- Qt 5.0.1 for Windows 32-bit (VS 2010, 481 MB)

Без разницы что выбирать?


Название: Re: Вопрос про кроссплатформенность
Отправлено: ViTech от Февраль 27, 2013, 13:19
Если этого делать не надо, то поясните, пожалуйста, в каком случае надо скачивать сам фреймворк Qt, а в каком QtCreator?
QtCreator - это IDE, для редактирования файлов и удобства сборки проектов. Чтобы собрать свое приложение, необходим фреймворк Qt (библиотеки и исходники). Для запуска приложений будет достаточно только библиотек Qt (Qt*.dll). Вместо QtCreator можно использовать и другие IDE, а собирать можно и без них, в командной строке.

- Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)
- Qt 5.0.1 for Windows 32-bit (VS 2010, 481 MB)
Без разницы что выбирать?
Если нет опыта с MinGW и целенаправленной работы с ним, то лучше Qt 5.0.1 for Windows 32-bit (VS 2010).


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 27, 2013, 13:31
ViTech, благодарю за информацию.

Если нет опыта с MinGW и целенаправленной работы с ним, то лучше Qt 5.0.1 for Windows 32-bit (VS 2010).
Да честно говоря и с VS опыта нет :) Есть только небольшой опыт с Билдером...

На самом деле мне всего лишь надо нижеперечисленное скомпилить и слинковать:

Цитировать
*.cpp
*.h
*.desktop
*.pro

Думал, что QtCreator'а будет достаточно...


Название: Re: Вопрос про кроссплатформенность
Отправлено: ViTech от Февраль 27, 2013, 13:43
Да честно говоря и с VS опыта нет :) Есть только небольшой опыт с Билдером...

Тогда надо заметить, что кроме фреймворка Qt нужны еще инструменты для сборки (компилятор, линковщик и т.п.). В случае с VS должно хватить установки Visual Studio 2010 Express (может еще понадобятся дополнительные SDK и для отладчика). В версии Qt 5.0.1 for Windows 32-bit (MinGW) инструменты будут входить, но там свои тонкости и заморочки.


Название: Re: Вопрос про кроссплатформенность
Отправлено: sergek от Февраль 27, 2013, 21:18
Ребят, прошу простить, что задаю настолько глупый вопрос, но все же: для того, чтобы использовать на Windows'е приложение, созданное под QtCreator на Linux'е, необходимо на винду скачать собственно сам фреймворк Qt (5.0.1)?

Если этого делать не надо, то поясните, пожалуйста, в каком случае надо скачивать сам фреймворк Qt, а в каком QtCreator?
Возможно, в вашем Linux (кстати, какой?) уже были установлены библиотеки Qt. Компилятор, по определению, там есть. Поэтому, видимо, у вас создалось впечатление, что нужно скачать только QtCreator, и можно создавать приложения.
В Windows все нужно устанавливать с нуля - библиотеки, компилятор и QtCreator. Фреймворк 5.0.1 (например, http://releases.qt-project.org/qt5/5.0.1/qt-windows-opensource-5.0.1-mingw47_32-x86-offline.exe (http://releases.qt-project.org/qt5/5.0.1/qt-windows-opensource-5.0.1-mingw47_32-x86-offline.exe)) включает в себя все, что нужно. Можно и по отдельности, если нравится сам процесс.
Переносите свой проект из Linux, открываете его в Creator и собираете. На другую машину переносите полученный exe и библиотеки из Qt - как правило, Qt5Cored.dll, Qt5Gui.dll и либы тех модулей, которые подключали в проекте).
Отдельно Creator обычно скачивается и устанавливается, когда выпускается его новая версия. Например, я долгое время работал с Qt SDK 1.2.1, а Creator скачал и использовал 2.6.1 - он намного удобнее, чем тот, что был в SDK.


Название: Re: Вопрос про кроссплатформенность
Отправлено: panAlexey от Февраль 27, 2013, 22:03
ViTech,
Выбирайте нужную версию здесь: http://qt-project.org/downloads.

- Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB)
- Qt 5.0.1 for Windows 32-bit (VS 2010, 481 MB)

Без разницы что выбирать?
Если нет хитрожопого кода который поддерживается онли одним компилером то пофигу.
Однако у вас подлиневое приложение. Думаю ваш вариант: - Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB).


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 28, 2013, 03:15
Всем огромнейшее спасибо за разъяснения! Картина на теории стала ясна.

Решил перейти к практике.

В общем, скачал я вариант с MinGW. При установке выбрал все галочки. Установилось на 5 гигов.

Открываю QtCreator, создаю новое "GUI Приложение Qt". Добавляю форму, жму "Собрать" и...

Цитировать
ошибка: Interrupt/Exception caught (code = 0xc0000005, addr = 0x3F3F3F3F)

Может быть у кого-нибудь будут идеи? :(

В процессе установки ничего плохого вроде как не было...

ОС: Win 7 64-bit.

Может из-за разрядности? MinGW же 32-х битный. Хотя не должно никак конфликтовать.

Не уверен, что переустановка поможет...



Название: Re: Вопрос про кроссплатформенность
Отправлено: carrygun от Февраль 28, 2013, 08:57
А просто гуй приложение по умолчанию без изменений собирается?


Название: Re: Вопрос про кроссплатформенность
Отправлено: ViTech от Февраль 28, 2013, 14:41
И в консоли сборки что-нибудь выводится?


Название: Re: Вопрос про кроссплатформенность
Отправлено: sergek от Февраль 28, 2013, 15:02
Цитировать
Может из-за разрядности? MinGW же 32-х битный. Хотя не должно никак конфликтовать.
Не должен, но лучше - 64-разрядный.
Возможно, у вас проблемы с профилями.
Попробуйте вот что:
- добавьте в PATH два пути: C:\Qt\Qt5.0.1\Tools\MinGW\bin;C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin;
- запустите Creator, проверьте "Инструменты/Параметры/Сборка и запуск" вкладки Компиляторы, Профили, Инструментарии. В автоопределенных должны быть внятные параметры. Сохраните.


Название: Re: Вопрос про кроссплатформенность
Отправлено: Странник от Февраль 28, 2013, 15:22
Да честно говоря и с VS опыта нет :) Есть только небольшой опыт с Билдером...
Тогда надо заметить, что кроме фреймворка Qt нужны еще инструменты для сборки (компилятор, линковщик и т.п.). В случае с VS должно хватить установки Visual Studio 2010 Express (может еще понадобятся дополнительные SDK и для отладчика).
Microsoft Windows SDK уже доступен в отдельной поставке, на кой VS-то тащить, если опыта с ней нет.
http://www.microsoft.com/en-us/download/details.aspx?id=8279


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 28, 2013, 18:29
- добавьте в PATH два пути: C:\Qt\Qt5.0.1\Tools\MinGW\bin;C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin;

Хм... Вот после добавления все заработало. sergek, огромное спасибо Вам!

Почему так? :) В смысле почему Qt сам не прописал это? И вообще какая необходимость в этом?


Название: Re: Вопрос про кроссплатформенность
Отправлено: gil9red от Февраль 28, 2013, 20:14
Например, при установке Qt Creator'a он "посмотрит" в переменных путях PATH наличие компиляторов и сможет сам их профили добавить
И также прописав в этих путях, абсолютный путь к dll Qt, сможете запускать из любого места на компе ехе'шники программ, требующие qt'ные dll, не будь этого, пришлось в директории с этими ехе держать требуемые dll


Название: Re: Вопрос про кроссплатформенность
Отправлено: sergek от Февраль 28, 2013, 21:15
В смысле почему Qt сам не прописал это? И вообще какая необходимость в этом?
Хз. Наверное, логично было бы при установке компилятора, библиотек и интегрированной среды одним пакетом прописывать как минимум один профиль.
Но, вообще говоря, это три разных продукта, и подружить их между собой - ваша задача. Тем более, что одновременно может стоять несколько версий Qt, minGW и QtCreator. У меня, к примеру, полный зоопарк (5.0.1, 4.8.1, два minGw и три Creator)  - тут столько профилей можно насоздавать!
Поэтому самый простой способ обычно бывает и самым надежным. Если в path прописаны пути к qmake и mingw32-make, то и пожалуйста вам автоопределенный профиль. Нет - настраивайте сами. Не наказуемо.


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Февраль 28, 2013, 22:14
sergek, к примеру, у моего друга, в QtCreator'е все нормально собирается и запускается без прописвания вышеуказанных путей в path. А у меня без них ошибка какая-то непонятная.
Хотя мы с ним сравнили наши настройки в QtCreator'е - они идентичны.

Непонятно...


Название: Re: Вопрос про кроссплатформенность
Отправлено: The_Immortal от Март 01, 2013, 00:16
Ладно, Бог с ним с этим path - работает и ладно :)

Сейчас возникла проблема посолиднее.

Собрал простенькое приложение под базовым классом QtWidget. Релизный exe получился 43 КБ.
Решил его запустить на машине (WinXP), где нет Qt.

Отправил туда мой exe и, как вы сказали, Qt5Core.dll, Qt5Gui.dll. Также подумал, что и Qt5Widgets.dll лишним не будет. Запускаю... "... icuin49.dll
не был найден". Ладно, нашел этот dll, скинул на машину. Запускаю: "... icuuc49.dll не был найден". Нашел и эту dll! Запускаю...

В общем, вот список чего в итоге потребовал мой exe:

  • icuin49.dll (3 МБ)
  • icuuc49.dll (1 МБ)
  • icudt49.dll (18 МБ!)
  • libGLESv2.dll (1 МБ)
  • libgcc_s_sjlj-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll

1) Скажите, пожалуйста, это нормально вообще? :)

2) После всего этого, при запуске проги мне выдалось вот такое:

(http://s61.radikal.ru/i172/1302/00/3410b1fef83a.png)

 :(


Название: Re: Вопрос про кроссплатформенность
Отправлено: kamre от Март 01, 2013, 03:57
В общем, вот список чего в итоге потребовал мой exe:

  • icuin49.dll (3 МБ)
  • icuuc49.dll (1 МБ)
  • icudt49.dll (18 МБ!)
  • libGLESv2.dll (1 МБ)
  • libgcc_s_sjlj-1.dll
  • libwinpthread-1.dll
  • libstdc++-6.dll

1) Скажите, пожалуйста, это нормально вообще? :)
Нет, надо вот так (если opengl используется):
Код:
.\icudt49.dll
.\icuin49.dll
.\icuuc49.dll
.\libEGL.dll
.\libgcc_s_sjlj-1.dll
.\libGLESv2.dll
.\libstdc++-6.dll
.\libwinpthread-1.dll
.\platforms\qwindows.dll
.\Qt5Core.dll
.\Qt5Gui.dll
.\Qt5OpenGL.dll
.\Qt5Widgets.dll
Так что пока Qt 5 фтопку, тем более в нем QPainter стал еще больше тормозить...


Название: Re: Вопрос про кроссплатформенность
Отправлено: carrygun от Март 01, 2013, 05:44
2) После всего этого, при запуске проги мне выдалось вот такое:

Подпапку platforms из папки plugins рядом с бинарником положи.


Название: Re: Вопрос про кроссплатформенность
Отправлено: xokc от Март 01, 2013, 08:59
Так что пока Qt 5 фтопку, тем более в нем QPainter стал еще больше тормозить...
По торможению QPainter из состава Qt5 информация объективная или так, из разряда "мне показалось"?


Название: Re: Вопрос про кроссплатформенность
Отправлено: kamre от Март 01, 2013, 11:48
По торможению QPainter из состава Qt5 информация объективная или так, из разряда "мне показалось"?
Вот создавал темку, пока никто толком не ответил: http://qt-project.org/forums/viewthread/25247/#116098

Меня QPainter интересует в первую очередь для отрисовки векторной графики.