1

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ランタイム(一部のライブラリやネイティブツールではありません)が本当に必要です?

4

1 に答える 1

2

解決しました。アンマネージDLLの場合、 .NETFramework4.0ランタイムは必要ありません。link.exeクリーンなWindowsXPSP3でWindowsSDK7.1ツールチェーンのコピーを実行するには(SDKもフレームワークもインストールされていません)、これらのライブラリを次の場所に追加する必要があります%PATH%

msvcp100.dll
msvcr100.dll
msvcr100_clr0400.dll
于 2012-11-27T09:12:08.390 に答える