私はかなり長い間 Visual Studio を使用しており、主に C++ の開発を行っています。私はしばしば、複数のモジュール (プロジェクト) を含むソリューションを作成する必要がありました。たとえば、いくつかの.dll
ファイルで構成されたユーティリティ ライブラリです。
あるモジュール (A) が別のモジュール (B) を使用する必要がある場合、次の標準パターンがあります。
- 必要なヘッダーを含めます。
- B から出力ライブラリ ファイルをリンクします (たとえば、VS: Project Config ->
Linker
->Input
->Additional Dependencies
->'B.lib'
)。 - [オプション] 適切なビルド順序を設定します (したがって、B は A の前にビルドされます)。
最近、C# をいじり始めました。それは、エンジン用の GUI ベースのツールをいくつか開発することにしたからです ( C++ や Qt や wxWidgets などの外部ライブラリを使用するよりもはるかに簡単です)。C# では、そのような依存関係は「参照」を使用して設定されることを学びました。
このオプションが C++ プロジェクトにも適用できることを発見したとき、私は非常に驚きました!
実際、サンプル ソリューションを作成し、この方法で依存関係を設定した後、「リンカー入力」などの追加構成なしで、すべてが正常に機能していました。
私の質問は、このオプションが C++ プロジェクトに対して正確に何をするのかということです。私はすべての利益と潜在的なトレードオフに興味があります。
依存関係として設定された他のプロジェクトからのリンク出力が発生することは既に知っています。他に何か?おそらく、参照されているモジュール間の実行時の依存関係でしょうか? 生成された出力にどのように影響しますか?