1

複数のアプリケーションでコードのセグメントを再利用できるようにするために、頻繁に必要とする関数/クラスの静的ライブラリを作成することにしました。その結果、静的ライブラリのコードを変更でき、そのライブラリを参照するすべてのアプリケーションの機能が更新されます。

アーキテクチャは、概念的に次のグラフのようになります。

AppA -> LibA
     \
      -> LibCommon -> LibX
     /             -> LibY
AppB

各アプリケーション (AppA、AppB) は異なるソリューションに存在し、明確に分離されています。

それを Visual Studio 2010 で完全に機能させるには、アプリケーションで使用される各 Lib のプロジェクトをソリューションに追加し、そのヘッダー ファイルを含むフォルダーを にAdditional Include Directories追加し、直接使用されるプロジェクトへの参照を追加する必要があります。

元。AppAの場合、私はそうします。

  1. LibA、LibCommon、LibX、LibY のプロジェクトを含めます。
  2. Additional Include Directoriesプロパティに LibA と LibCommon のパスを追加します
  3. メイン アプリケーションに LibA と LibCommon への参照を追加してから、LibCommon のプロジェクトに LibX と LibY への参照を追加します。

私の最初の質問は、アプリケーションが直接必要とするライブラリのみをインポートする方法はありますか? (LibA と LibCommon)

2 つ目の質問: Visual Studio 2010 で再利用可能なコードを簡単に管理するためのより良い方法はありますか? (ジュニアプログラマーはこちら!)

4

2 に答える 2

1

これらのライブラリのプロジェクトを含める必要はありません。コンパイラには .h ファイル、リンカには .lib ファイルのみが必要です。私がすることは、最初に libs プロジェクトをいくつかの固定ディレクトリ構造で整理することです。次に、これらの行に沿って何かを LibCommon.h に追加します。

#include "LibXDir/LibX.h"
#include "LibYDir/LibY.h"
#ifdef _DEBUG
#pragma comment (lib, "LibCommon.lib")
#pragma comment (lib, "LibXDir/Debug/LibX.lib")
#pragma comment (lib, "LibXDir/Debug/LibY.lib")
#else
#pragma comment (lib, "LibCommon.lib")
#pragma comment (lib, "LibXDir/Release/LibX.lib")
#pragma comment (lib, "LibXDir/Release/LibY.lib")
#endif

これにより、アプリに LibCommon.h を含めるだけで済み、残りのライブラリを取り込んでくれます。設定によっては、追加のインクルード ディレクトリとライブラリ ディレクトリを設定する必要がある場合があります。または、すべての .lib ファイルを中央の lib ディレクトリに作成またはコピーして、追加する必要がある唯一の lib ディレクトリにすることもできます。

アプリの作業中にライブラリを変更するつもりはないと思います。その場合は、変更後にライブラリを再作成する必要があります。これは、実際にプロジェクトをソリューションに追加することで実行できます。ただし、ほとんどの依存関係は、プロジェクト設定ではなく、1 つのファイルに設定できます。

于 2012-06-22T20:10:47.630 に答える
1

@eranが投稿した正解に追加するだけです:

プロパティ内にパスを含めることができます ([プロパティ] -> [構成プロパティ] -> [VC++ ディレクトリ] -> [ディレクトリを含める])。プロパティ内にライブラリ パスを含めることができます ([プロパティ] -> [構成プロパティ] -> [VC++ ディレクトリ] -> [ライブラリ ディレクトリ])。

于 2013-04-17T15:32:56.170 に答える