Communityエディションをインストール。Studio付属のコマンドラインツールを使うために開発者コマンドプロンプトを起動。Studio付属のコマンドラインツールを使うにはpathの設定やらINCLUDE環境変数等の環境変数の追加設定が必要で面倒。ツールをもっと簡単に使用できます。プログラムをコンパイルします。Studioには他にもコマンドプロンプトのショートカットが4個存在する。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。Studioのコマンドプロンプトについて動作確認してみた。コードをビルドするように環境を設定します。コマンドプロンプトが32bit版か64bit版かは環境変数PROCESSOR_ARCHITECTUREの値を参照する事で判定できる。愚鈍人PROCESSOR_ARCHITECTUREの値がAMD64であれば64bit,x86であれば32bitという事になる。一応、環境変数comspecの値も参照してみる。Studio\2019\Community>64bit版のコマンドプロンプトとして実行されている事がわかる。comspecの値もC:\WINDOWS\system32\cmd.exeと64bit版のコマンドプロンプトという事になる。参考までに32bit版コマンドプロンプトのありかはC:\Windows\SysWOW64\cmd.exe。PROCESSOR_ARCHITECTUREの値AMD64VC++コンパイラCL.exeの存在しているデレクトリをwhichコマンドで確認してみる。私の環境ではunixツールのDOS版がインストールしてあるのでwhichコマンドが使えるが、もしunixツールが無い環境ではwhereコマンドでも確認できる。Studio\2019\Community\VC\Tools\MSVC\14.23.28105\bin\HostX86\x86\cl.exeではCL.exeは64bitの実行プログラムなのか32bitなのかをPEヘッダーの値を参照してみる。machineCL.exeコンパイラ32bitプログラムCL.exeによって生成されるexeファイルが64bitなのか32bitを確認。以下のソースをコンパイルしてみる。このプログラムは自分自身が64bitで実行されているのか32bitで実行されているのかをコンソールに出力する。Studioのコマンドプロンプトについても調べてみる。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。コードをビルドするように環境を設定します。プロンプトはVC++の開発に主眼が置かれているという事のなのだろうか。ツール」(開発者コマンドプロンプトの環境)という事になるのだろうか。Studio付属のコマンドラインツールの32bit版や64bit版の位置も推察できる。Studio\2019\Community\VC\Tools\MSVC\14.23.28105\bin\HostX86\x64\HostX86\x64は32bitホストPCにおいて64bit版アプリを開発するためのコマンドラインツールのデレクトリdumpbin等のツールもこれらのデレクトリにそれぞれのバージョンが保存されている。「14.23.28105」の部分はMSVCのバージョンによって異なるものと思われる。HostX64配下には64bit版WindowsOSで動作する64bit版プログラム,HostX32配下には32bit版WindowsOSで動作する32bit版プログラムが配置されているという事なのだろう。各コマンドプロンプトはすべて64bit版のコマンドプロンプトが実行されている。32bit版のコマンドプロンプトを起動して64bit版のコンソールアプリを実行する事はできるのだろうか。プロンプト」の環境でコンパイルして、32bit版のコマンドプロンプトより実行してみた。32bit版のコマンドプロンプトを起動するにはエクスプローラを使ってC:\Windows\SysWOW64\cmd.exeを起動する事で実行できる。%PROCESSOR_ARCHITECTURE%x86C:\Windows\SysWOW64>C:\HOME\test\simple.exex64ちゃんと64bitコンソールアプリとして動作している。これは64bit版WindowsOSの場合の話であって、32bit版WindowsOSでは当然64bitアプリは動かないだろう。プロンプト」より32bit版のコマンドプロンプトを常駐(/kオプションを付けてC:\Windows\SysWOW64\cmd.exeを実行)させてみる。プロンプト」の環境変数の値を保ったまま32bit版のコマンドプロンプトを動作させる事ができ、64bitコンパイラを実行させる事もできる。(x64)面白い事に、逆に32bit版コマンドプロンプトより64bit版コマンドプロンプト(C:\Windows\System32\cmd.exe)を常駐させてみても32bit版コマンドプロンプトのままである。%PROCESSOR_ARCHITECTURE%x86これは、WOW64がファイルシステムをリダイレクトしているのであって、これを回避するには64ビット版コマンドプロンプトとして「%windir%\Sysnative\cmd.exe」を指定すれば良い。新・かみひろぐ環境変数の「PROCESSOR_ARCHITECTURE」の値によって処理を変更すれば良い。環境変数の「PROCESSOR_ARCHITECTURE」の値がx86でない場合には32bit版のコマンドラインツールを起動してその環境より32bitコンソールアプリを実行すれば良い。exit)これらの事が何の役に立つかは別にして、「小さいことが気になる私の悪い癖」。32bit版のコマンドプロンプトにおける動作とその裏で動作しているWOW64の動作の理解にはなるかな。愚鈍人コマンドラインを使うなら、通常のコマンドプロンプトよりnyaosの方が便利。nyaos自体は32bitではあるが64bit1版のコンパイラ等の64bit版コンソルーアプリもnyaosで動作する。プロンプト」の環境を引き継いだnyaosを起動するbatファイルを作ってみた。プロンプト」のbatファイルをcallした後にnyaosを起動してカレントディレクトリをC++のソースデレクトリに移動しているだけだが。