Подтвердить что ты не робот

Можно ли создавать приложения Windows Store с помощью Mingw?

Есть ли способ создания приложений Windows Store с помощью Mingw toolchain? (И в конечном итоге перекрестно скомпилировать их из mingw в Linux, так как если он работает в одной инструментальной цепочке Mingw, он должен работать в другом.)

Я предполагаю, что одним из требований является придерживаться API: разрешено в изолированной программной среде Windows Store, но что еще нужно рассмотреть перед распространением в магазине? XAML? 32 или 64-битный код?

Так как Mingw С++ не поддерживает связь с MSVС++, я предполагаю, что простые программы C без WRL были бы самым простым способом для достижения этого?

4b9b3361

Ответ 1

Вам нужно будет использовать Windows Runtime С++ Template Library (WRL) напрямую, вы не сможете использовать C++/CX, так как Mingw не поддерживает его. Помимо этого, мне кажется, вам просто нужен Windows 8 SDK, тогда вам нужно настроить Mingw на использование заголовков и библиотек. Кроме того, вы не сможете использовать XAML для описания своего пользовательского интерфейса, вам придется вручную создать свой интерфейс в коде.

Вместо того, чтобы пытаться записать все приложение с помощью mingw и перекрестно скомпилировать его с помощью linux, вы можете написать свои основные библиотеки с помощью mingw, а затем написать простую оболочку UI по библиотекам с помощью Visual Studio Express (бесплатно). Таким образом, вы можете использовать все приятные вещи, такие как XAML и ref-counted экземпляры.

Это подход, который я использовал - используя библиотеки, написанные на С++, а затем отдельный проект пользовательского интерфейса (с использованием XAML), который ссылается на другие библиотеки. Он работает хорошо.

Ответ 2

MinGW-w64 имеет экспериментальную поддержку среды UWP C, распределенной с VS2013. C dll, связанные с универсальным VS2013 crt, также могут быть использованы с инструментальными цепочками VS2015 и VS2017 UWP (проект UWP должен иметь "Microsoft Visual С++ 2013 Runtime Package для Windows Universal" в качестве зависимости).
MinGW-w64 предоставляет библиотеку winstorecompat для замены некоторых запрещенных вызовов API на платформе UWP с пользовательской реализацией. winstorecompat должен быть связан с библиотекой пользователей перед связыванием с системными библиотеками.
Кроме того, ему необходимо было создать dll MinGW C с настраиваемым флагом -Wl,--dynamicbase, чтобы пройти проверку безопасности набора сертификатов Windows 10 Store, а также установить флаг бит appcontainer для совместимости с двоичными резервными установками Windows 10.
Здесь ссылка для примера проекта Я работал над тем, как использовать обычную C MinGW Dll в Windows 10 С# UWP-приложение, методы PInvoke из C dll и пройти сертификационные проверки сертификационных комплектов, которые будут опубликованы в Windows Store. Я ссылался на libVLC Реализация сборки WinRT.

Ответ 3

Взгляните на использование С++/WinRT с компилятором clang вместо MinGW:

https://github.com/Microsoft/cppwinrt
https://moderncpp.com/

"С++/WinRT - это стандартная проекция языка С++ для Windows Runtime, реализованная исключительно в файлах заголовков. Она позволяет обоим авторам и потреблять API-интерфейсы Windows Runtime с использованием любого компилятора С++, совместимого со стандартами".

"С++/WinRT использует возможности языка С++ 17 и поэтому вам нужно сказать С++, что вашему проекту требуется стандарт языка С++ 17".

"Хотя Visual С++ продолжает оставаться нашей основной целью, мы используем Clang в качестве нашего вторичного компилятора для обеспечения стандартного соответствия. В этом обновлении было внесено немало изменений для поддержки сборки Clang и исправления ошибок ошибок, которые были найдены только с Clang строит".