3

C++ プロジェクトを使用した従来の MSVS ソリューションがあります。バージョン管理システムから取得し、初めてビルドしようとすると (クリーンなとき)、エラーが発生します: LNK 1104 ライブラリが見つかりません。

2 回目にビルドしようとすると、すべて正常にビルドされます。

プロジェクト「A」(C++)は、プロジェクト「B」(C++も)であるライブラリ(libファイル)に依存しています。

"A" の cpp ファイルの 1 つに次のようなコードがあります (#pragma コメントには stdafx.h が適しているのではないでしょうか?):

#pragma comment(lib, "B.lib")

最初のビルドでリンカーエラーが発生する

最初のビルド結果を調査しました。「B」プロジェクトは正常にコンパイルされ、「lib」ファイルが生成され、「A」プロジェクト (「B」に依存) はソリューション プロジェクトのビルド順序の最後のプロジェクトです。

「B」は「A」よりも早くビルドする必要があるため、「A」が初めて「B」ライブラリを表示しないのはなぜだろうか。同じソリューションを 2 回目にビルドすると、リンカー エラーは発生しません。

4

2 に答える 2

1

これは、ビルド順序に関係しています。プロジェクト A が最初にビルドされた場合、B.libまだ存在しません。したがって、エラーが発生します。次に、プロジェクト B がビルドされ、B.lib生成されます。再度ビルドすると、ライブラリが存在するため、エラーはなくなりました。

これを解決するには、A が B に依存していることをソリューションに伝える必要があります。ソリューションを右クリックし、プロジェクトの依存関係に移動し、[プロジェクト] で選択Aし、[依存対象] にチェックBを入れます。何かのようなもの:

ここに画像の説明を入力

于 2012-05-27T18:47:23.667 に答える
1

プロジェクトAを右クリック>プロジェクトの依存関係を
チェックプロジェクトB

VS はコードから依存関係を差し引いていません。明示的に伝える必要があります。

于 2012-05-27T18:39:23.333 に答える