x86_32用のWindowsSDK7.1を使用してC++プロジェクトをコンパイルしたい。最新のアップデートが適用されたクリーンなWindowsXPSP3x86_32を使用しています。プロジェクト(名前は関係ありません)はクロスプラットフォームであり、Makefiles(vcxproj / msbuildなし)を使用してビルドされ、アンマネージC ++コード(C#またはその他のマネージコードなし)のみが含まれます。
Windows SDK 7.1をインストールし(インストーラーを実行するには.NET Framework 2.0が必要であり、C++コンパイラをインストールするには.NETFramework 4.0が必要です)、SDKのSetEnv.cmdスクリプトを使用してコンパイル環境を設定し、プロジェクトを正常にビルドしました。
次に、同じWindows SDKを使用して、異なるWindowsバージョン(2003、Vista、7、2008)でビルドをテストする必要があります。クリーンなOSでビルドをテストする必要があるたびにISOからWindowsSDKをインストールしたくありません。時間がかかります。代わりに、C ++コンパイラを含むフォルダが必要です。このフォルダをコピーして、クリーンなWindowsインスタンスにコピーし、その横にあるコードソースをコピーして、バッチスクリプトを実行してビルドを開始できます。
そこで、すべてのWindows SDKファイルを、Windows SDK、C ++コンパイラ、および.NETFramework2.0をアンインストールした別のフォルダにコピーしました。Windows SDKファイルを元のフォルダーにコピーして戻すよりも(それに応じてSetEnv.cmdスクリプトを変更してどこにでも移動できます)。その後、ビルドは正常に機能します。
しかし、.NET Framework 4.0をアンインストールすると、link.exe
呼び出し時にビルドが失敗します。
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
link.exe
.NET Framework 4.0のインストールからいくつかのライブラリまたはツールを使用すると思ったので、C:\WINDOWS\Microsoft.NET
アンインストールする前にフォルダーをコピーしてから、元の場所にコピーして戻しました。それは役に立ちません。
私はLNK1123
グーグルで検索し、アドバイスは「VS2010SP1をインストールする(まったく使用しない)」と「.NET Framework 4.0を再インストールする」(これは機能しますが、これはまさに私が避けようとしていることです)でした。
異なるコンパイラはオプションではありません。Windowsでは、このプロジェクトはVS2010(Windows SDK 7.1に含まれている)のコンパイラのみをサポートします。
私は混乱していlink.exe
ます-WindowsSDK7.1のx86_32の場合、完全にネイティブで管理されていないC ++コード(CLRでは使用されません)をビルドするには、 .NET Framework 4.0ランタイム(一部のライブラリやネイティブツールではありません)が本当に必要です?