9

同じ VS ソリューションに入れたい複数の VS プロジェクトを必要とするプログラム (C++) を作成しています。Visual Studio 2010 を使用しています。

必要なアーキテクチャは次のとおりです。プロジェクトにサードパーティのライブラリ (A) を使用しています。ソース コードでコンパイルしたすべてのヘッダーと .lib ファイルがあります。

このライブラリを使用して、独自のクラスと関数を作成しています。それが私のプロジェクト (B) です。

次に、(B) で定義されたクラスと関数を使用する、コマンド ライン インターフェイス (C1) と GUI インターフェイス (C2) の 2 つのユーザー インターフェイスを開発したいと思います。

A <-- B <-- C1
        <-- C2

Visual Studio は初めてで、これらの依存関係を適切に処理する方法がわかりません。プロジェクトの依存関係 (ソリューション プロパティ内) または参照 (プロジェクト プロパティ内) を使用する必要がありますか? 実際、依存関係と参照が正確に何をしているのかはわかりません。

B をいくつかの .lib ライブラリにコンパイルするか、それとも別のことをしますか? そうする場合、B.lib だけを C1 および C2 プロジェクトにリンクする必要があります。または、A.lib もリンクする必要があります (つまり、A.lib の内容が何らかの方法で B.lib に含まれていますか?)。もちろん、各プロジェクトの最新バージョンで常に動作するように、依存関係を適切に処理する必要があります。

それを行う良い方法はありますか?よろしくお願いします。良い週末をお過ごしください :)

4

2 に答える 2

3

はい。プロジェクト参照を使用します。

Microsoft からの公式の回答は次のとおりです。このページでは .NET について説明していますが、ネイティブ プロジェクトについてもほぼ同じです。

TL;DR バージョン:

プロジェクト参照の利点:

  1. これらは、ソリューションとプロジェクト セットが読み込まれるすべての開発ワークステーションで動作します。これは、プロジェクトのグローバル一意識別子 (GUID) がプロジェクト ファイルに配置され、現在のソリューションのコンテキストで参照されるプロジェクトを一意に識別するためです。
  2. これらは、Visual Studio .NET ビルド システムがプロジェクトの依存関係を追跡し、正しいプロジェクトのビルド順序を決定できるようにします。
  3. 参照されたアセンブリが特定のコンピューターで失われる可能性を回避します。
  4. プロジェクト構成の変更を自動的に追跡します。たとえば、デバッグ構成を使用してビルドする場合、すべてのプロジェクト参照は、参照されるプロジェクトによって生成されたデバッグ アセンブリを参照し、リリース構成内のリリース アセンブリを参照します。これは、参照をリセットすることなく、プロジェクト間でデバッグ ビルドからリリース ビルドに自動的に切り替えることができることを意味します。
  5. Visual Studio .NET が循環依存関係を検出して防止できるようにします。

これは、VS 2010 でのプロジェクト設定の変更に関する別の優れた記事で、プロジェクトの依存関係よりも参照を優先する必要があると述べています。実際、この記事では、VS2010 ソリューション コンバーターがプロジェクトの依存関係を自動的に検出し、プロジェクトの参照に変更するとも述べています。

于 2014-12-11T03:12:23.913 に答える
2

私が働いている会社の方針は、プロジェクトの参照を使用することです。

プロジェクト参照は、特定のプロジェクトがプロジェクトに依存しているプロジェクトの情報を保持するため、より便利です。その後、プロジェクトを新しいソリューションに追加する必要がある場合、古いソリューション ファイルに戻って、特定のプロジェクトが依存しているプロジェクトを見つける必要はありません。

于 2014-02-12T09:15:29.170 に答える