21

Mingwツールチェーンを使用してWindowsStoreアプリケーションを構築する方法はありますか?(そして、最終的にはLinux上のmingwからクロスコンパイルします。これは、あるMing​​wツールチェーンで機能する場合は別のツールチェーンでも機能するはずだからです。)

1つの要件は、Windowsストアアプリのサンドボックスで許可されているAPIに固執する ことだと思いますが、ストアに配布する前に、他にどのようなことを考慮する必要がありますか?XAML?32ビットまたは64ビットのコード?

Mingw C++はMSVC++とリンク互換性がないため、 WRLを使用しないプレーンなCプログラムがこれを実現する最も簡単な方法だと思いますか?

4

3 に答える 3

12

WindowsランタイムC++テンプレートライブラリ(WRL)を直接使用する必要があります。Mingwがサポートしていないため、C ++/CXを使用することはできません。それ以外は、Windows 8 SDKが必要なだけだと思います。次に、ヘッダーとライブラリを使用するようにMingwを構成する必要があります。また、 XAMLを使用してユーザーインターフェイスを記述することはできません。コードでUIを手動で作成する必要があります。

アプリケーション全体をmingwで記述し、Linuxでクロスコンパイルするのではなく、コアライブラリをmingwで記述し、Visual Studio Express(無料)を使用してライブラリに単純なUIラッパーを記述します。そうすれば、XAMLや参照カウントされたインスタンスなどの優れた機能をすべて使用できます。

これは私が採用したアプローチです。C++で記述されたライブラリを使用し、次に他のライブラリを参照する別のUIプロジェクト(XAMLを使用)を使用します。それはうまくいきます。

于 2012-10-16T08:43:32.133 に答える
5

MinGW-w64は、VS2013で配布されるUWPCランタイムを実験的にサポートしています。ユニバーサルVS2013crtにリンクされたCdllは、VS2015およびVS2017 UWPツールチェーンでも使用できます(UWPプロジェクトには、依存関係として「Windowsユニバーサル用Microsoft Visual C ++ 2013ランタイムパッケージ」が必要です)。
MinGW-w64はwinstorecompat、UWPプラットフォームで禁止されているAPI呼び出しをユーザー定義の実装に置き換えるライブラリを提供します。winstorecompatシステムライブラリとリンクする前に、ユーザーのライブラリにリンクする必要があります。また、 Windows 10ストア認定キットのセキュリティチェックに合格するに
は、カスタムフラグを使用してMinGW C dllをビルドし、Windows10ストアのバイナリ要件と互換性があるようにビットフラグを設定する必要があります。 ここにリンクがあります-Wl,--dynamicbaseappcontainer
プロジェクトのサンプルを作成するために、プレーンなCMinGWDllをWindows10C#UWPアプリケーションに使用する方法、C dllからメソッドをPInvokeする方法、およびWindowsストアで公開するCertificationKitのセキュリティチェックに合格する方法について説明しました。libVLCWinRTビルドの実装を参照しました。

于 2017-09-12T22:01:20.007 に答える
3

MinGWの代わりにclangコンパイラでC++/WinRTを使用する方法を見てみましょう。

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

「C++/ WinRTは、ヘッダーファイルのみに実装されたWindowsランタイムの標準C ++言語プロジェクションです。これにより、標準に準拠したC++コンパイラを使用してWindowsランタイムAPIを作成および使用できます。」

「C++/WinRTはC++17言語機能に依存しているため、プロジェクトにC++17言語標準が必要であることをC++に通知する必要があります。」

「VisualC++は引き続き主要なターゲットですが、標準の適合性を確保するために、セカンダリコンパイラとしてClangを使用しています。このアップデートでは、Clangビルドをサポートし、Clangビルドでのみ検出された正確性のバグを修正するために多くの小さな変更が加えられました。」

于 2017-11-09T14:25:08.903 に答える