11

libFooライブラリプロジェクトと実行可能プロジェクトを備えたVisualStudioソリューションがあります。Barこれはに依存しlibFooます。

たとえば、変更libFoo/bar.cppしてビルドしようとするとlibFoo、Visual Studioはbar.cppファイルをコンパイルしますが、ライブラリlibFoo.libは既に最新であると言って再生成しません。

システム時計を確認しました。また、ファイルの変更時刻bar.objが実際に更新されていること、およびライブラリがobjよりも古いことを確認しました。ただし、それでもライブラリは再作成されません。

実際のソリューションは、実際には約100のプロジェクトで構成されており、それらの一部はライブラリであり、一部は実行可能ファイルです。この問題は、私のチームメンバーの3人のコンピューターで発生します。残りは影響を受けません。なぜそれが起こるのか、そしてそれをどのように修正するのか私たちは知りません...またはそれが他のチームメンバーに起こるかもしれない天気。

ライブラリとそれに依存する実行可能ファイルを使用して独自の小さなソリューションを作成しても、それを再現することはできませんでした。したがって、これは環境問題とソリューション/プロジェクトファイルの問題の組み合わせであると私は信じています。

ありがとう、アレックス。

編集

このソリューションは、Visual Studio 2010で作成され、VS2012の使用を開始するまで、過去数年間VS2010で開発されました。この問題は、VS2010とVS2012の両方がインストールされているユーザーで発生します。このソリューションは現在VS2012ソリューションであり、プロジェクトはVS2010プラットフォームツールキットを使用しています。

VS2012の使用を開始したとき、チームはソリューションを移行しましたが、すべてのC ++プロジェクトの「プラットフォームツールキット」をVS2010のもののままにして、コードとVS2010を使用している他のチームとの互換性を確保しました。

グーグルはもっともらしい解決策を明らかにしなかった。それは他の人々も同様の問題に遭遇したという事実を明らかにしましたが。

4

2 に答える 2

1

この質問をした人と同じ問題に遭遇したようです。MicrosoftConnectに関するバグレポートもあります。

簡単に言うと、中間フォルダーは、一部の構成では%temp%フォルダーと同じでした。すべてのVisualC++プロジェクトの中間フォルダーを変更することで、問題を解決しました。

于 2013-03-20T09:46:59.243 に答える
0

「General\TargetName」と「Librarian\OutputFile」のプロジェクトプロパティが一致していること、およびすべての構成で一致していることを確認してください。「Librarian\CommandLine」ページでも上記を確認する価値があります。

于 2013-02-15T13:20:31.180 に答える