Qt Visual Studio 2013
Posted By admin On 15.10.19Aug 25, 2016 - В будущем планируется сделать Qt VS Tools доступным из Visual Studio Gallery с возможностью установки из Visual Studio 2013 и 2015.
У меня есть проект, которой я сконвертировал в солюшн вижуалки, используя спек winrt-x86-msvc2013. Солюшн получился рабочий и после пары допилов я смог нормально собрать приложение, сделать пакет для магазина со всеми зависимостями. Приложение работает нормально, но стоит его запустить не из вижуалки как оно закрывается через некоторое время. Как я понял это связано с тем, что приложение не проходит активацию Магазином и тот его закрывает. Потому решил выложит в магаз, но у меня из-затого что используется сторонний фреймфворк сертификационные тесты не проходят нормально. Выдается куча ошибок несовместимости API и прочих гадостей. Может кто нить уже сталкивался с подобным?
- Не так давно вышел новый Qt. Для платформы Windows сборки под MinGW и Visual Studio. Kaspersky Internet Security 2013.
- Столкнулся с проблемой компоновки виджетов в Qt. Проблема в том,.
- Чтобы скомпилировать структуру Qt самостоятельно с помощью компилятора Visual С++ (MSVC) из VS2013, вы можете использовать этот учебник.
Как решали данную проблему? Извиняюсь за эту лапшу. Файлы крепить тут нельзя, а из-за 'Основной текст не может содержать изображения и ссылки, пока ваша учетная запись не будет проверена.' Я могу предоставить лишь голый текст. Обнаружена ошибка: Тест двоичного анализа обнаружил следующие ошибки:. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg accessible qtaccessiblewidgets.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg audio qtaudiowindows.dll не прошел проверку AppContainerCheck.
Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg bearer qgenericbearer.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg bearer qnativewifibearer.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg D3Dcompiler47.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg iconengines qsvgicon.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg icudt52.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg icuin52.dll не прошел проверку AppContainerCheck.
Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg icuuc52.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qdds.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qgif.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qicns.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qico.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qjp2.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qjpeg.dll не прошел проверку AppContainerCheck.
Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qmng.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg imageformats qsvg.dll не прошел проверку AppContainerCheck.Большой и скучный разворот; и не того журнала какого хотелось бы-. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg mediaservice qtmediaaudioengine.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg mediaservice wmfengine.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg platforms qwindows.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg playlistformats qtmultimediam3u.dll не прошел проверку AppContainerCheck.
Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Core.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Gui.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Multimedia.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Network.dll не прошел проверку AppContainerCheck.
Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Svg.dll не прошел проверку AppContainerCheck. Файл C: Program Files WindowsApps BarsCross1.0.0.1x86ap6e88z9fejfg Qt5Widgets.dll не прошел проверку AppContainerCheck. Обнаружена ошибка: При тестировании поддерживаемых API обнаружены следующие ошибки:. API?Syserrormap@std@@YAPBDH@Z в msvcp120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API. API?Winerrormap@std@@YAPBDH@Z в msvcp120.dll не поддерживается для данного типа приложений.
Qjpeg.dll вызывает этот API. API?Xbadalloc@std@@YAXXZ в msvcp120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API. API?Xlengtherror@std@@YAXPBD@Z в msvcp120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API.
API?Xoutofrange@std@@YAXPBD@Z в msvcp120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API. API??1typeinfo@@UAE@XZ в msvcr120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API.
API??2@YAPAXI@Z в msvcr120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API. API??3@YAXPAX@Z в msvcr120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API. API??V@YAXPAX@Z в msvcr120.dll не поддерживается для данного типа приложений. Qjpeg.dll вызывает этот API.Еще один разворот -.
API purecall в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API. API unlock в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API. API free в msvcr120.dll не поддерживается для данного типа приложений.
Qdds.dll вызывает этот API. API memcpy в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API. API memmove в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API. API memset в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API.
Инструкции по исправлению: Вам необходимо обеспечить одинаковую производительность приложения в различных конфигурациях компьютера; эта производительность должна превышать минимальные требования - в противном случае приложение может получить неудовлетворительную оценку при приемке в магазин Windows. Информационные показатели могут предоставить аналитические сведения в областях, которые помогут повысить производительность приложения, но они не влияют на принятие приложений в магазин Windows. Для получения дополнительных сведений щелкните ссылку ниже.
Решение очевидно но не обязательно легко осуществимо: надо убрать все компоненты которые несоместимы с WinRT. Напирмер вы используйте некий 'qjpeg.dll'.
Если это ваш собственный компонент то переделываем его чтоб он не использовал указанные в списке выше недоступные АПИ. Если это не ваш компонент то тут такие варианты: 1. Заменяем его на версию сделанную для WinRT если она имеется. Удаляем данный компонент и весь функционал который требует данного компонента. Ищем другой WinRT совместимый компонент который делает нечто подобное и заменяем компоненты.
Удаляем компонент и пишем нужный фунцкионал самостоятельно. This posting is provided 'AS IS' with no warranties, and confers no rights. Это бред, то что пишу, но может он вам поможет. Сам магазин не закрывает приложения, на сколько мне известно. Для работы не сертифицированных приложений на компе достаточно лицензии разработчика, которая подразумевает, что вы используете такие приложения на свой страх и риск. Поэтому причина закрытия не в магазине.
Если разница в том, что в студии работает, а без нее нет, то вам тогда в отладчик. Для проверки места вылета без студии обычно использовала (в других IDE) окна с сообщениями, накидайте их кучу с номерами, и увидев какой номер был последним, узнаете в каком месте у вас вылет. Плюс наверное стоит обратить внимание на разрешения для вашего приложения как у самой ОС, так и прочих антивирусных программ. Так например DrWeb пока гробит работу PUSH уведомлений, и мой WinGeoChat не может нормально работать.
Решение очевидно но не обязательно легко осуществимо: надо убрать все компоненты которые несоместимы с WinRT. Напирмер вы используйте некий 'qjpeg.dll'. Если это ваш собственный компонент то переделываем его чтоб он не использовал указанные в списке выше недоступные АПИ. Если это не ваш компонент то тут такие варианты: 1.
Заменяем его на версию сделанную для WinRT если она имеется. Удаляем данный компонент и весь функционал который требует данного компонента. Ищем другой WinRT совместимый компонент который делает нечто подобное и заменяем компоненты. Удаляем компонент и пишем нужный фунцкионал самостоятельно.
This posting is provided 'AS IS' with no warranties, and confers no rights. Qjpeg.dll это плагин Qt, который добавляется автоматически при сборке проекта. И как видно из лога он ругается не только на него, но и на msvcp120.dll, msvcr120.dll, а также другие Qt'шные либы(QtCore, QtGui и тд). Так что убрать их не получится. Остается менять настройки компиляции или пытаться собрать на других помgлектах разработки Qt.
Это бред, то что пишу, но может он вам поможет. Сам магазин не закрывает приложения, на сколько мне известно. Для работы не сертифицированных приложений на компе достаточно лицензии разработчика, которая подразумевает, что вы используете такие приложения на свой страх и риск. Поэтому причина закрытия не в магазине.
Если разница в том, что в студии работает, а без нее нет, то вам тогда в отладчик. Для проверки места вылета без студии обычно использовала (в других IDE) окна с сообщениями, накидайте их кучу с номерами, и увидев какой номер был последним, узнаете в каком месте у вас вылет. Плюс наверное стоит обратить внимание на разрешения для вашего приложения как у самой ОС, так и прочих антивирусных программ.
Так например DrWeb пока гробит работу PUSH уведомлений, и мой WinGeoChat не может нормально работать. Дело определенно в магазине. Да, комплекту разработки Qt WinRT достаточно только лицензии разработчика чтобы скомпилить приложение и произвести его инсталляцию в систему в обход Магазина. Но чтобы собрать пакет приложения и установить его (по 'фен-шую') из Магазина необходимо создавать, хотя бы временный, сертификат и подписывать приложение.
После чего его можно будет устанавливать, выполнив скрипт установки, или выложить в Магазин и устанавливать от туда. От выкладывания в Магазин отказаться не могу, тк это было одно из условий в ТЗ. При запуске приложения в VS в режиме отладки, то приложение работает нормально без проверки активации магазином, но если выполнить обычный запуск приложения(ctrl+F5), то как раз вылезает отладочное окно VS, информирующее о том, что приложение не было активировано магазином в необходимый промежуток времени.
Вот фото: Пришлось выложить на гуглодиск, тк картинки вставлять пока не могу. Объяснить почему приложение не проходит сертификацию очень просто. Почитайте что написано в Technical details of the port Проще говоря, создание приложений поддерживается и они запускаются, но для того что бы приложения проходили сертификацию и их можно было выкладывать в Win Store, нужно портировать Qt под новые API Win Rt Мне знакомы проблемы портирования Qt под WinRT. Наиболее существенные из них оказались отсутствие QProcess'ов и QWebKit.
Вследствие чего пришлось отказываться от некоторого функционала, передавая его внешним средствам для обработки, а также разделять логику и графику и реализовывать взаимодействие между ними. Тем не менее, если глянуть лог, то некоторые функции уж на столько системные, что сомневаюсь что они вообще должны портироваться под РТ, например:. API memcpy в msvcr120.dll не поддерживается для данного типа приложений.
Qdds.dll вызывает этот API. API memmove в msvcr120.dll не поддерживается для данного типа приложений. Qdds.dll вызывает этот API.
Неужели, копирование памяти и её перемещение требует изменения?. Предложено в качестве ответа Dmitriy Konyuhov 23 декабря 2014 г. 2:58 Может это и к вашему вопросу тоже подходит, я со своей проблемой переустановкой всего с нуля несколько раз решила. Вам мое решение точно не подойдет, а вот с обновлением будет по-проще. Сама не проверяла, так как уже работает после переустановки. У меня это обновление отсутствует( Я после разворачивания восьмерки на виртуальной машине сразу же отключил обновления.
В центре обновлений у меня было единственное обновление КB27. После его удаления ни чего не изменилось(. У меня это обновление отсутствует( Я после разворачивания восьмерки на виртуальной машине сразу же отключил обновления. В центре обновлений у меня было единственное обновление КB27. После его удаления ни чего не изменилось( Ну если вы уверены в своих компонентах, попробовать скомпилировать и выложить ваше приложение с другого устройства с Windows 8. Если это не поможет, то тогда ничего не остается как последовать совету Ilya Tumanov, который вам предложил создать новый проект и в него кусками переносить код, проверяя как на это реагирует магазин, при выявлении проблем пытаться найти аналог для магазина.
Не так давно вышел новый Qt, обещающий большое и светлое будущее, и я решил опробовать сие чудо. Но для начала работы с этим чудом мне понадобилось собрать его для моей установленной студии 2012 года из исходных файлов. А сборка оказалась далеко не тривиальной (хотя кривость моих рук никто не отменял – таким студентам, как я, руки необходимо об забор выпрямлять).
Как только вышла в конце прошлого года стабильная версия нового Qt5, я решил было его скачать и попробовать, но, к сожалению, те сборки, которые мне были нужны, а именно: для платформы Windows сборки под MinGW и Visual Studio 2012, — отсутствовали на сайте. Поэтому я скачал и установил готовую сборку для моего линукса: Ubuntu 12.04.
Правда мной уже тогда были предприняты попытки (правильнее потуги) собрать хотя бы для MinGW библиотеку из sources. Однако все обернулось неудачей, расстройством и глубокой депрессией. В конце января разработчики порадовали нас версией 5.0.1, исправленной и собранной для работы с MinGW 4.7. Однако для VS2012 они снова не выложили сборку.
И тут я решил, стоит попробовать снова, а вдруг получится? В поисках информации по интернету я наткнулся на несколько статей по сборке, но никак не под VS2012. Самой правдивой, на мой взгляд, оказалась версия на официальной вики страничке проекта, как бы странно это не звучало. Поэтому попробую описать весь этот процесс еще раз здесь, попутно комментируя и добавляя свои, нужные, на мой взгляд, пункты по сборке.
Решил рискнуть и собрать как можно более полную библиотеку. Что необходимо:.
Установленная Visual Studio 2012 (не Express Edition). Windows Development Kit 8 с DirectX должен быть уже в комплекте. Установленный. Установленный. Установленный. Установленный. Примечание, сайт не.
А также скачать собственно сами Замечание, по какой-то, неизвестной мне причине, python версии 3.3.0 выдавал ошибку при трансляции файлов, хотя разработчиками заявлена работоспособность нового питона, поэтому пришлось ставить версию 2.7. Мои действия даже мне до сих пор кажутся сильно шаманскими, поэтому я постараюсь подробно описать свои неумелые шаги, так как пересобрать заново всю эту махину мне не то чтобы не охота – время и нервы жалко. Надеюсь, что кто-то возьмется тоже собрать, и расскажет, что не получилось из моего метода, и совместными знаниями «добьем», так сказать, сие чудо. Рекомендую вначале ознакомиться со всей статьей во избежание мелких недоразумений во время сборки.
Итак, начнем. Моя система – Windows 8 Pro with Media Center x64. Ноутбук марки eMachines E732ZG. Краткие характеристики: Intel Pentium P6200 (двухъядерный) 2.13 GHz на каждом ядре, 6 GB RAM DDR3, 320 GB HDD.
Версия Visual Studio 2012 Ultimate Update 1. Kaspersky Internet Security 2013 был выключен на время сборки. Все дополнительные программы я установил в C: Development.
ICU был скачан не на официальном сайте, а на другом, но там была выложена сборка для vs2012. В эту же папку были распакованы исходные файлы Qt5.0.1: C: Development qt-everywhere-opensource-src-5.0.1 При установке были выбраны галочки для прописи perl, ruby и python в переменную окружения PATH. Думаю, что вариант их ручной прописи в командной строке, в которой мы будем собирать, тоже сгодится: set PATH=C: Development Perl64 bin;C: Development Python27;C: Development Ruby193 bin;%PATH% Запускаем Command Prompt VS 2012 (я запускал от имени Администратора). Эта штука прописывает все свои либы в пути, поэтому запускаем именно ее.
Сам батник находится в «C: Program Files (x86) Microsoft Visual Studio 11.0 Common7 Tools VsDevCmd.bat». Затем в ней задаем следующие переменные: set CL=/MP set INCLUDE=C: Development icu-50.1.2-shared-vs2012 include;%INCLUDE% set LIB=C: Development icu-50.1.2-shared-vs2012 lib;%LIB% set PATH=C: Development icu-50.1.2-shared-vs2012 bin;%PATH% Командой set CL=/MP мы указываем, скорее всего, утилите nmake что у нас несколько ядер: «Поэтому, пожалуйста, распараллеливайте задачи по компиляции».
Далее переходим в саму папку с sources: cd C: Development qt-everywhere-opensource-src-5.0.1 Следующие действия, я думаю, сделать сразу, так как иначе сборка qtwebkit проходит с ошибкой, точнее не проходит: set PATH=%PATH%;%CD% gnuwin32 bin cd. Qtwebkit set WEBKITOUTPUTDIR=%CD% WebkitBuild cd.
Кстати, команда set WEBKITOUTPUTDIR=%CD% WebkitBuild под большим вопросом, нужна ли она здесь? Она была взята из мануала по отдельной компиляции qtwebkit. Можете убедиться в правильности всех путей набрав следующее: set INCLUDE && set LIB && set PATH Кстати еще, можете сделать батник из этих команд и запускать его посредством той же Command Prompt 2012.
Конфигурация Теперь нужно откофигурировать сборку. Для этого набираем следующее, находясь в директории C: Development qt-everywhere-opensource-src-5.0.1: configure -prefix C: Development Qt 5.0.1MSVC2012 qtbase -opensource -platform win32-msvc2012 -debug-and-release -shared -c11 -nomake examples -nomake tests -icu -confirm-license. Параметром -prefix C: Development Qt 5.0.1MSVC2012 qtbase мы задаем место инсталяции нашего Qt.confirm-license просто пропускает запрос о согласии с лицензией.platform win32-msvc2012 указываем ручками платформу. Мне кажется, что она может быть определена автоматически.debug-and-release собирает сразу два варианта, как для отладки так и без нее. Еще варианты: -debug или -release. Странно, но почему-то этот параметр игнорируется, хотя в VS2012 заявлен новый стандарт. Кстати, при попытке собрать для MinGW 4.7 также игнорировался.
Интересно, как обстоит дело на Linux для gcc?.nomake examples -nomake tests не собирают для нас пример и тесты – лишнее место, но если хотите, можете не указывать.shared. Этот параметр определяет будущее ваших будущих приложений на Qt (не знаю как сказать по-другому). Если он указан (хотя, по-моему, определен по умолчанию) то все собранные приложения будут зависеть от наличия установленных библиотек на машине. То есть с переносом даже на соседский компьютер будет беда. Для сборки независимых приложений следует указывать -static. Но будущие приложения существенно вырастут в размере (10 кб против 10 мб в простой программе helloworld с GUI).
Остальные параметры конфигурации можно узнать, набрав: configure -help Здесь либо будут ошибки, которые еще просто исправить (каких-то путей не хватает или библиотек), либо все соберется хорошо. Процесс занимает не более 10 минут. Компиляция и установка Далее все менее радостно. Просто запускаем команду nmake и курим, пьем чай, готовим, спим и т.д. После многочасовой сборки (или многосуточной) можно запускать команду nmake install.
Она скопирует вашу библиотеку в указанную директорию в параметре -prefix. Опыт У меня все было еще печальнее. Изначально в PATH стоял питон версии 3.3, а вот эту штуку я не делал: set PATH=%PATH%;%CD% gnuwin32 bin Я не знаю, сколько длилась сборка, час, два или больше, но при попытке собрать qtwebkit утилита nmake вывалилась из-за отсутствия какого-то winflex. Я психанул, так как это была моя уже третья попытка собрать всю библиотеку с qtwebkit, и просто ввел nmake install. Библиотека была скопирована, но не до конца. Опять же вывалилась при попытке скопировать не скомпилированный qtwebkit.
На мою студию к этому моменту уже было установлено расширение. В настройках я указал путь к установленной на половину библиотеке. Создал первое пробное приложение, но после удачной сборки но отказалось запускаться из-за отсутствия трех.dll от icu. Пришлось дописывать в PATH путь C: Development icu-50.1.2-shared-vs2012 lib и перезапускать студию, в итоге в студии все запускается без проблем. QtCreator после до настройки на эту библиотеку отказался нормально запускать удачно собранные приложения. Они почему-то вылетали с ошибкой. Запустив собранное приложение из директории сборки, оказалось отсутствует D3DCOMPILER46.dll Не знаю, что с этим делать.
Буду рад, если подскажете. Затем я начал искать способы собрать этот печальный модуль, и наткнулся на такую инструкцию: set PATH=%PATH%;%CD% gnuwin32 bin cd.
Qtwebkit set WEBKITOUTPUTDIR=%CD% WebkitBuild perl Tools Scripts build-webkit -qt -qmake=”%CD%. Qtbase bin qmake.exe” -install-libs= (install der) -release -makeargs=%MAKEFLAGS% Но nmake теперь сругался на MAKEFLAGS. Запустил без этого аргумента: perl Tools Scripts build-webkit -qt -qmake=”%CD%.
Qtbase bin qmake.exe” -install-libs= (install der) -release Однако теперь nmake стал ругаться на отсутствие MainThreadQt.moc. Поэтому я ввел nmake clean и вышел в общую папку qt. Уже оттуда я запустил nmake (теперь в path дописан%CD% gnuwin32 bin), и, о чудо, оно работает, ОНО СОБИРАЕТСЯ.
Причем с того момента, где вывалился (он проверил, что собранные либы уже существуют и дошел до первой несобранной). Правда через некоторое время он вывалился снова. Теперь меня подвел питон версии 3.3. Где-то в интернете я прочитал, что стоит поставить версию 2.7, что я и сделал. Перезапустил командную строку после установки и замены в переменной PATH пути до питона. Заново прописал все set и ввел nmake.
Он продолжил свою работу. Теперь сижу жду уже битый час окончания всей эпопеи. Последнее действие началось в около 14:00 МСК, где-то в 22:35 он закончил собирать qtwebkit webcore версию debugshared и начал «стряпать» release объектники, что займет тоже самое время. Плюсом, там, судя по-всему, была собрана еще не вся библиотека. Надеюсь, что за предстоящую ночь все сделается. На момент написания основной части статьи, nmake собирал qtwebkit уже часов 8 к ряду. Сейчас прошло уже более суток с момента последнего запуска nmake.
Спешу обрадовать (воспринимать двояко) – за сутки и 6 часов он собрал qtwebkit, еще 2 – 4 часа было потрачено в самом начале на сборку основной библиотеки. Еще 2 — 3 часа ушло на досборку утилит, таких как QtDesigner, Linguist и Assistant. Сборка завершилась удачно, без сбоев. Папка с исходными файлами выросла с 700 – 800 Мб, до 10 Гб!
Затем запустил nmake install. Копировал минут сорок. В итоге папка C: Development Qt 5.0.1MSVC2012 весит 1.22 Гб. Через Visual Studio Add-in 1.2.0 for Qt5 к VS2012 все «цепляется» замечательно, только одна проблема, все скомпилированные Qt приложения, даже QtDesigner требуют какой-то D3DCOMPILER46.dll.
Его я нашел по адресу C: Program Files (x86) Windows Kits 8.0 Redist D3D x86. А также еще требовались библиотеки icudt50.dll, icuin50.dll, icuuc50.dll, которые находятся в C: Development icu-50.1.2-shared-vs2012 lib. По какой-то непонятной мне причине designer и assistant из этой сборки не запускаются, даже после ручного добавления к ним D3DCOMPILER46.dll. Кто-то может что-то по этому поводу что-нибудь дельного сказать? Надеюсь, что вам данная статья поможет, и вы потратите меньше времени на выяснение причин неработоспособности.
Метки:. Добавить метки Пометьте публикацию своими метками Метки необходимо разделять запятой. Например: php, javascript, андронный коллайдер, задача трех тел. На тему D3DCOMPILER46.dll это компонент DirectX — установите его Runtime в SxS и будет все отлично Папка с исходными файлами выросла с 700 – 800 Мб, до 10 Гб!
И раньше так было Этот параметр определяет будущее ваших будущих приложений на Qt (не знаю как сказать по-другому). Если он указан (хотя, по-моему, определен по умолчанию) то все собранные приложения будут зависеть от наличия установленных библиотек на машине. То есть с переносом даже на соседский компьютер будет беда. Для сборки независимых приложений следует указывать -static. Но будущие приложения существенно вырастут в размере (10 кб против 10 мб в простой программе helloworld с GUI) epic.facepalm.
1) компилируете Qt с встраиваемыми icu и внешними библиотеками 2) переносите Qt.5.dll и все Для сборки независимых приложение -static — только в том случае если оно некоммерческое — т.к. Qt под двойной лицензий EULA/LGPL — а static тем самым уже несовместима с LGPL Не на 10MB а на размер подключенных общих библиотек, однако хорошо сжимается тем-же UPX. Если только QtCore — то где-то 7MB, если еще WebKit и Photon — то все 25MB По какой-то непонятной мне причине designer и assistant из этой сборки не запускаются Dependency Walker и нет проблем;) Я не знаю, сколько длилась сборка, час, два или больше, но при попытке собрать qtwebkit утилита nmake вывалилась из-за отсутствия какого-то winflex. Если Вас забанили в Google — то помогаю https://codereview.qt-project.org/#change,43190 (пробел убрать — т.к. Хабрапарсер неверно иначе парсит URL) winflex — это утилита из GNU Tools Binary Component.
На винде при стандарной установке Qt 5.0.1 + VS 2010 для запуска приложения (QtGui+QtWidgets) в директории с приложением должны быть: 1) директория platforms с файлами qwindows.dll и qminimal.dll 2) Библиотеки аппаратного (и не очень) ускорения рисования интерфейса: D3DCompiler43.dll, libEGL.dll, libGLESv2.dll 3) три библиотеки ICU: icudt49.dll, icuin49.dll и icuuc49.dll 4) Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll и так далее, всё как раньше с Qt4. При невыполнении пунктов 1 или 2 программа будет просто закрываться без выдачи ошибок. Подробно написано.