21

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

我想一个要求是坚持Windows 应用商店应用沙箱中 允许的 API:s,但在分发到商店之前还有哪些其他事项需要考虑?XAML?32 位还是 64 位代码?

由于 Mingw C++ 与 MSVC++ 的链接不兼容,我认为没有WRL的纯 C 程序将是实现这一目标的最简单方法?

4

3 回答 3

12

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

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

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

于 2012-10-16T08:43:32.133 回答
5

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在与系统库链接之前,应先链接到用户的库。
此外,还需要使用自定义标志构建 MinGW C dll-Wl,--dynamicbase以通过 Windows 10 应用商店认证工具包安全检查,并将appcontainer位标志设置为与 Windows 10 应用商店二进制要求兼容。
这是链接对于示例项目,我研究了如何将纯 C MinGW Dll 用于 Windows 10 C# UWP 应用程序、来自 C dll 的 PInvoke 方法并通过认证工具包安全检查以在 Windows 应用商店中发布。我已经引用了 libVLC WinRT 构建实现。

于 2017-09-12T22:01:20.007 回答
3

看看使用 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 构建中发现的正确性错误。”

于 2017-11-09T14:25:08.903 回答