web-dev-qa-db-ja.com

Visual Studio 2012を使用してARMデスクトッププログラムをビルドできますか?

Visual Studio 2012ベータ版と、ARMアーキテクチャで正常にコンパイルされたデスクトップ(win32)プログラムで作業していました。

Visual Studio 2012 RCにアップグレードした後、コンパイラーが機能せず、次のエラーが出力されます。

「ARMプラットフォーム用のデスクトップアプリケーションのコンパイルはサポートされていません。」

これに関するフォーラムの投稿を見つけました http://connect.Microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work

MicrosoftがARMでのwin32開発を本当に中断しているのは正しいですか?そして、VS2012ベータ版でのコンパイルは単なるまぐれでしたか?

31
Viesturs

ファイルを編集できます:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props

の中に <PropertyGroup>セクションは次の行を追加します。

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>

</PropertyGroup>

そしてそれだけです。VS2012でARMデスクトップアプリをビルドできます。

47
mamaich

このエラーを回避して、ARMバージョンのclに「/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE」コマンドライン引数を追加することで、ARMの小さな「hello world」cppファイルをコンパイルできました。 C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\VC\bin\x86_armにあります。 crtdefs.hファイルで、この質問に対するsn0wの回答から#defineを見つけました。そのファイルを変更する必要はありません。今、私はもっと複雑なものが実際に動作することを保証することはできません。または、MicrosoftがWindows RTデスクトップアプリに対して何らかの種類のホワイトリストまたはデジタル署名の検証を行っていないことを保証できません。 Windows RTが最終的に利用可能になると、実行が許可されない場合があります。

コマンドラインからARMバージョンのcl.exeを実行する前に、次のバッチファイルを使用して環境変数を設定する必要があることに注意してください。 "C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\VC\bin\x86_arm\vcvarsx86_arm.bat "

10
Paul

アプリをコンパイルしても、Windows 8で実行することはできませんRT署名されていないアプリは起動しません。

私はこれをテストしましたが、残念ながらそうです。

次のメッセージが表示されます。
Windows cannot verify the digital signature of this file

おそらくこれに対する回避策があると思いますが、公式にはサポートされません。

はい、もちろん。 VS2012 RCで練習しました。 「ARMプラットフォームはサポートされていません)向けのデスクトップアプリケーションのコンパイル」を回避し、win32アプリケーションをビルドする方法を説明します。

1番目の方法:ビルドツールを修正する-目標は、パッチを適用する(またはベータ版に置き換えること)MSBuildのlib:Microsoft.Build.CPPTasks.Common.v110.dll

2番目の方法:Visual Studio Toolsのスタートメニューから「VS2012 ARM Cross Tools Command Prompt」を実行し、cl [cl params] myfile1.cpp myfile2.cpp myres.res .../linkを実行します[linkparams]

どちらの場合も、333行目でcrtdefs.hの#errorディレクティブをコメントアウトする必要があります(Microsoft Visual Studio 11.0\VC\include)

3
sn0w