は私もこの問題を抱えていました。 VS2008プロジェクトをVS2010プロジェクトに変換すると、リンクフェーズはVS2010プロジェクトで同じエラーで破損します。プロジェクトが構築するはずの.libをリンクしようとしています!
私の問題の原因が見つかりました:プロジェクトは、ビルドの最後、PostBuildEventの前に発生するカスタムビルドステップを持っています。このカスタムビルド手順は、.dll、.lib、および.pdbを$(OutDir)から外部の場所にコピーします。
出力一覧にカスタムビルドステップをコピー.dllファイル、.libファイルと.PDBへの完全なパスに設定されているため、例えば:
C:/a_new_location/myproject.dll;
C:/a_new_location/myproject.lib;
C:/a_new_location/myproject.pdb.
私はこの出力リストの.libを含んたびことがわかりました.libがリンクフェーズでリンクするファイルのリストに追加されます。したがって、上記の出力リストで、リンクフェーズは、のファイルリストがあります:
myprojectfile1.obj
myprojectfile2.obj
C:/a_new_location/myproject.lib
をそして、それは失敗するリンクが発生します。
LINK : fatal error LNK1181: cannot open input file 'C:\a_new_location\G4SrcCfgLib.lib'
カスタムビルドでコピーどうかは問題ではありません。ステップは実際にファイルをコピーするかどうかを示します。重要なことは、出力リストに.libが含まれていることです。だから、私はもちろん、出力リストから.libを削除することで問題を解決しました。この欠点は、クリーンビルドを実行してもC:/ a_new_location/libをクリーンアップできないことです。しかし、少なくともそれは構築する。
説明が不明です。 Xはあなたのソリューションに含まれているプロジェクトで、Xを使用する別のプロジェクトですか?もしそうなら、Xプロジェクトだけをビルドできないのはなぜですか?そうでない場合は、あなたのソリューションのプロジェクトをさらに記述してください... – eran
こんにちは、プロジェクトXは私の解決策です。このソリューションには、もう少しプロジェクトがいくつかあります。プロジェクトXは、他のプロジェクトによって生成されたDLLを使用します。その部分は問題ありません。問題は、ソリューションのCleanを作成し、リリースフォルダにあるX.libファイルを削除したことです。後でプロジェクトXがビルドされると、X.dllが作成されます。しかし、ソリューションには存在しない "X.lib"に対して入力依存関係があると言われています。このX.libは、プロジェクトXが正常にビルドされた後にのみ作成されます。だから、私はこの状況を「デッドロック」と似ていると考えました。 –