微禄: 2008年3月アーカイブ

一旦、ハードディスクをVC++ 2008 Standard Editionをインストールする前の状態に戻し、再度インストールを行いました。

何故か、今度は上手くいったようです。

「cl.exe」のインストール位置を確認したところ、

 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\x86_amd64
 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\amd64

の3フォルダに、それぞれ存在しているようですが、勿論、ビルドに利用するのは、VC¥bin内にある「cl.exe」です。


今回のインストール項目選択は、

 ・Visual C++


前回のインストール項目選択は、

 ・Visual Web Developer

 ・Visual Basic
 ・Visual C++

 ・SQL Server 2005 Express Edition


まさかとは思いますが、前回のインストール時には、Microsoft Updateで

 ・Office 2007 Service Pack 1

をいれたのですが。

何がいけなかったのでしょうか?

VC++ 2008の「Standard Edition」と「Express Edition」で動作が異なったため、「cl.exe」のインストール位置を確認したところ、

・VC++ 2008 Express Editionでは

 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

フォルダ内にありました。が、

・VC++ 2008 Standard Editionでは、何故か

 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\x86_amd64
 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\amd64

の2つのフォルダがあり、「cl.exe」が2つ存在していました。

それぞれのフォルダに移動して、clコマンドを実行すれば、当然コンパイルが行われますが、リンカー辺りで別の問題が発生します。

DVDで「復旧/再インストール」を実行しても同じ現象ですので、更からインストールをやり直します。


因みに、cl.exe(VC++コンパイラ)には、様々なバージョンがあるようで、

マシンのCPU   ターゲットCPU   インストールされるコンパイラ   SDKの選択
X86        X86         X86 ネイティブコンパイラ     X86
X86        X64         X86_amd64 クロスコンパイラ    X64
X86        IA64         X86_IA64 クロスコンパイラ     IA64
X64        X64         X64 ネイティブコンパイラ     X64
X64        X86         X86_amd64 クロスコンパイラ    X86
X64        IA64         X86_IA64 クロスコンパイラ     IA64
IA64        IA64         IA64 ネイティブコンパイラ     IA64
IA64        X86         X86_IA64 クロスコンパイラ     X86
IA64        X64         X86_amd64 クロスコンパイラ    X64


x86 on x86
x86 マシン用の出力ファイルを作成します。cl.exe のこのバージョンは、x86 マシン上ではネイティブの 32 ビット プロセスとして、64 ビットのWindowsオペレーティング システムでは WOW64 により 32 ビット プロセスとして実行されます。

x64 on x64
x64 用の出力ファイルを作成します。cl.exe のこのバージョンは、x64 マシン上ではネイティブのプロセスとして実行されます。

Itanium on Itanium
Itanium 用の出力ファイルを作成します。cl.exe のこのバージョンは、Itanium マシン上ではネイティブのプロセスとして実行されます。

x64 on x86(x64クロス コンパイラ)
x64 用の出力ファイルを作成します。cl.exe のこのバージョンは、x86 マシン上ではネイティブの 32 ビット プロセスとして、64 ビットのWindowsオペレーティング システムでは WOW64 により 32 ビット プロセスとして実行されます。

Itanium on x86(Itaniumクロス コンパイラ)
Itanium 用の出力ファイルを作成します。cl.exe のこのバージョンは、x86 マシン上ではネイティブの 32 ビット プロセスとして、64 ビットのWindowsオペレーティング システムでは WOW64 により 32 ビット プロセスとして実行されます。

となっているようです。

状況を確認するために、同型の他のパソコンにVC++をインストールして、動作チェックを行います。

マイクロソフトの「Visual Studio 2008 Express Editions」サイトから
「VisualC++ 2008 Express Edition」をダウンロード・インストール後、同じようにラベルを付けたフォームをビルドしたところ、

すんなりとビルドが完了し、フォームが表示されました。

試しに、「Visual Studio 2008 コマンドプロンプト」を起動して、clコマンドを実行してみると、使用法のメッセージが表示されました。

どうやら、「cl.exe」のパスは、実行可能ファイルのパスにちゃんと含まれているようです。

因みに、ビルドが成功した時の「VC++ ディレクトリ」の内容は、

$(VCInstallDir)bin
$(WindowsSdkDir)\bin
$(VSInstallDir)Common7\Tools\bin
$(VSInstallDir)Common7\tools
$(VSInstallDir)Common7\ide
$(ProgramFiles)\HTML Help Workshop
$(FrameworkSDKDir)bin
$(FrameworkDir)$(FrameworkVersion)
$(VSInstallDir)
$(SystemRoot)\SysWow64
$(FxCopDir)
$(PATH)

でした。

cl.exe起動中のエラー

|

「Visual C++ 2008 Standard Edition」をインストール後、ラベルを付けたフォームをビルドしたところ、

「プロジェクト: error PRJ0003 : cl.exe' の起動中にエラーが発生しました」

とエラーが表示されて、ビルド出来ませんでした。

検索してみると、MSDN版Visual Studio.NET 2003に

原因として以下のことが

 ・システムリソースの不足。この問題を解決するには、一部のアプリケーションを終了します。
 ・適切でないセキュリティ権限。適切なセキュリティ権限が指定されているかどうかを確認してください。
 ・[VC++ ディレクトリ] で指定された実行可能ファイルのパスに、実行を試みているツールのパスが含まれていません。
 ・メイクファイル プロジェクトの場合は、[ビルド コマンド ライン] または [リビルド コマンド ライン] のいずれかで実行するコマンドがありません。

考えられます。と書かれていたようです。

試しに、「Visual Studio 2008 コマンドプロンプト」を起動して、clコマンドを実行してみると、"操作可能なファイルとして認識されていません"と言うようなメッセージが表示されました。

どうやら、実行可能ファイルのパスに、「cl.exe」のパスが含まれていないのが、原因のように思われます。