Windows Store应用程序可以使用Mingw构建吗?

有没有办法使用Mingw工具链构建Windowsapp store应用程序? (并最终在Linux上从mingw 交叉编译它们,因为如果它在一个Mingw工具链中工作,它应该在另一个工作链中工作。)

我想一个要求是坚持 使用API​​: Windows Store应用程序沙箱中允许的内容,但在分发到商店之前还需要考虑哪些其他内容? XAML? 32或64位代码?

由于Mingw C ++与MSVC ++没有链接兼容,我认为没有WRL的普通C程序是最简单的实现方法吗?

您需要直接使用Windows运行时C ++模板库 (WRL),因为Mingw不支持它,您将无法使用C ++ / CX 。 除此之外,我认为您只需要Windows 8 SDK ,然后您需要配置Mingw以使用标头和库。 此外,您将无法使用XAML来描述您的用户界面,您必须在代码中手动创建UI。

您可以使用mingw编写核心库,然后使用Visual Studio Express(免费)在库上编写一个简单的UI包装,而不是尝试使用mingw编写整个应用程序并使用linux交叉编译。 这样你就可以使用XAML和ref-counting实例等所有好东西。

这是我采用的方法 – 使用C ++编写的库,然后使用引用其他库的单独UI项目(使用XAML)。 它运作良好。

MinGW-w64具有与VS2013一起分发的UWP C运行时的实验支持。 与通用VS2013 crt链接的C dll也可以与VS2015和VS2017 UWP工具链一起使用(UWP项目应该具有“Microsoft Visual C ++ 2013 Runtime Package for Windows Universal”作为依赖项)。
MinGW-w64提供了winstorecompat库,用于在UWP平台上用用户定义的实现替换一些禁止的API调用。 在链接系统库之前,应将winstorecompat链接到用户的库。
此外,还需要使用自定义标志-Wl,--dynamicbase构建MinGW C dll -Wl,--dynamicbase以通过Windows 10 Store Certification Kit安全检查,并将appcontainer位标志设置为与Windows 10 Store二进制请求兼容。
这里是示例项目的链接我已经研究过如何将纯C MinGW Dll用于Windows 10 C#UWP应用程序,从C dll使用PInvoke方法,并通过认证工具包安全检查以在Windowsapp store中发布。 我引用了libVLC WinRT构建实现。

看一下使用C ++ / WinRT和clang编译器代替MinGW:

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

“C ++ / WinRT是Windows Runtime的标准C ++语言投影,仅在头文件中实现。它允许您使用任何符合标准的C ++编译器创作和使用Windows Runtime API。”

“C ++ / WinRT依赖于C ++ 17语言特性,因此您需要告诉C ++您的项目需要C ++ 17语言标准。”

“虽然Visual C ++仍然是我们的主要目标,但我们使用Clang作为我们的辅助编译器来确保标准一致性。在此更新中进行了许多小的更改,以支持Clang构建并修复只有Clang构建才能找到的正确性错误。”