有没有办法使用Mingw工具链构建Windows应用商店应用? (最后cross compile他们来自Linux上的mingw,因为如果它在一个Mingw工具链中工作,那么它应该适用于另一个。)
我想在Windows应用商店应用沙箱中有一个要求是stick to the API:s allowed,但在分发到商店之前还需要考虑哪些其他事项? XAML? 32或64位代码?
由于Mingw C ++与MSVC ++没有链接兼容,我认为没有WRL的普通C程序是最简单的方法吗?
答案 0 :(得分:11)
您需要直接使用Windows Runtime C++ Template Library(WRL),因为Mingw不支持C++/CX,您将无法使用Windows 8 SDK。除此之外,我认为您只需要XAML,然后您需要配置Mingw以使用标头和库。此外,您将无法使用{{3}}来描述您的用户界面,您必须在代码中手动创建UI。
您可以使用mingw编写核心库,然后使用Visual Studio Express(免费)在库上编写一个简单的UI包装,而不是尝试使用mingw编写整个应用程序并使用linux交叉编译。这样你就可以使用所有漂亮的东西,如XAML和ref-counting instances。
这是我采用的方法 - 使用C ++编写的库,然后使用引用其他库的单独UI项目(使用XAML)。效果很好。
答案 1 :(得分:4)
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以通过Windows 10 Store Certification Kit安全检查,并将appcontainer
位标志设置为与Windows 10 Store二进制要求兼容。
这是示例项目的link我已经研究过如何将纯C MinGW Dll用于Windows 10 C#UWP应用程序,从C dll中使用PInvoke方法并通过认证工具包安全检查以在Windows应用商店中发布。我引用了libVLC WinRT构建实现。
答案 2 :(得分:2)
看看使用C ++ / WinRT和clang编译器而不是MinGW:
https://github.com/Microsoft/cppwinrt
https://moderncpp.com/
" C ++ / WinRT是仅在头文件中实现的Windows运行时的标准C ++语言投影。它允许您使用任何符合标准的C ++编译器创作和使用Windows运行时API。"
" C ++ / WinRT依赖于C ++ 17语言功能,因此您需要告诉C ++您的项目需要C ++ 17语言标准。"
"虽然Visual C ++仍然是我们的主要目标,但我们使用Clang作为我们的辅助编译器来确保标准一致性。在此更新中进行了许多小的更改,以支持Clang构建并修复仅在Clang构建中找到的正确错误。"