0

VS2005 と VS2008 を同じマシンにインストールしています。'05 と '08 の両方を使用して構築した共通のコードベースもあります。この目的のために、私は 2 つの VC プロジェクトを持っています。XYZ_2008.vcproj と呼ばれる '08 プロジェクトとXYZ_2005.vcproj呼ばれる '05 プロジェクト、および対応する 2 つの slns も同様です。どちらのプロジェクトも、dll、lib、および pdb を同じ出力ディレクトリに出力します (すべて適切な _2005 および _2008 サフィックスが付いています)。

クリーンな状態から開始すると仮定すると、まず VS2005 で XYZ_2005.sln (XYZ_2005.vcproj を含む) を開き、正常にビルドします。次に、VS2005 を閉じます。

次に、XYZ_2008.sln (XYZ_2008.vcproj を含む) を開いてビルドします (再ビルドではありません)。この時点で、次のエラーが表示されます。

LINK : fatal error LNK1104: cannot open file 'mfc80u.lib'

'08 ソリューションをビルドすると、エラーはなくなり、ビルドは成功します。'08 sln のビルドではなく、直接リビルドを行った場合も、ビルドは成功します。

すべてが分離されているにもかかわらず、VS08 ビルドは MFC9 ファイルではなく (VS05 から) MFC8 ファイルを取得しているようです。

誰かがこの問題を手伝ってくれませんか?

前もって感謝します!

4

1 に答える 1

1

リンクの依存関係がビルド .obj ファイルに格納されている可能性があります。VS2008 は、ソースもビルド オプションも変更されていないため、再ビルドの必要性を「認識」しません。リンク時に古い依存関係が使用され、リンクが失敗します。

2 つの VS ビルドを混同するのは悪い考えだと思います。両方のソリューションが必要な場合は、一方のソリューションから他方のソリューションに変更するときに必ず再構築を行う必要があります。

于 2010-06-02T13:12:56.687 に答える