web-dev-qa-db-ja.com

Visual Studio 2010は、依存するプロジェクトから静的ライブラリを自動リンクしない

  • C++コンソールコマンドラインプロジェクトを使用して新しいソリューションを作成する
  • 新しいプロジェクト、C++静的ライブラリを作成します
  • コマンドラインプロジェクトをライブラリに依存させる
  • [設定] => [リンカ] => [一般]で[リンクライブラリの依存関係]がオンになっていることを確認します(デフォルトです)。
  • Visual Studioはライブラリをリンクしません。

どうすれば修正できますか? Visual Studio 2008で機能しました。

57
Thomas Bonini

これはまだ機能しますが、VS 2010では 変更 でした:

「VS2010では、暗黙的な参照を定義するプロジェクトの依存関係のサポートを停止し、プロジェクトレベルでプロジェクトの依存関係を定義する新しい方法も導入しました。プロジェクト参照とプロジェクトの依存関係はどちらもプロジェクトに適用される密接な概念であるため、以下のスニペットでわかるように、プロジェクト参照定義とプロジェクト依存関係定義の唯一の違いは、出力アセンブリの包含/除外を定義するメタデータにあります/ 「プロジェクトの依存関係」ダイアログは削除しませんでしたが、「フレームワークと参照」ダイアログで新しいプロジェクトの依存関係を定義することをお勧めします。プロパティページで「参照アセンブリ出力」プロパティを設定する必要があります。 UIは、プロジェクトの依存関係の場合はfalseに、プロジェクト参照の場合はtrueになります。」

コンソールプロジェクトを右クリックし、[プロパティ]-> [共通プロパティ]-> [フレームワークと参照]-> [新しい参照の追加]を選択して、静的ライブラリプロジェクトを追加します。右側の[リンクライブラリの依存関係]がTrueであることも確認してください。デバッグビルドとリリースビルドで動作するようです。毎日新しいことを学びます。 ;)

81
Sean Fausett

VS2010でC++プロジェクトの依存関係を追加するためのUIを変更しましたが、奇妙なことに、古いUIを削除せずに、または何らかの方法で機能しなくなったことを示しています。

VS2010で依存関係を作成するには、[新しい参照の追加](プロジェクトプロパティで見つけることができます)を使用する必要があります。また、プロジェクトの右クリックメニューで確認することもできます(チェックするVSはありません)

古い「プロジェクトの依存関係」ダイアログは現在基本的に壊れています。

23
jalf

MSVC 14(2015バージョン)の場合、プロジェクトを右クリックし、"Add->Reference..."を右クリックして、必要な依存関係をすべて確認します。

はい、2010年から2015年のバージョンのどこかで変更されました。楽しい!

また、リソースを含むプロジェクトをリンクする場合は、.resファイルをリンカー入力依存関係のリスト(プロジェクトのプロパティダイアログボックス)で直接指定する必要があります。上記の構成。

[〜#〜] update [〜#〜]

MSVC 2017でも同じ(新しい)動作

8
YePhIcK

IDE内からビルドする場合、情報については、古いUI(依存関係)がVisual Studioのビルド順序に影響すると思います。新しいプロジェクト構成システムは、各プロジェクトファイルに参照を埋め込むため、IDEの外部からビルドできます(以前のバージョンでは、依存関係の自動リンクを取得できないため、できませんでした。依存関係はソリューションレベルでのみ行われたため)。

また、新しいシステムのより複雑なプロジェクトにはいくつかの問題があります。具体的には、結果として得られるすべてのバイナリプロジェクトは、適切にビルドするためにすべての依存ライブラリへの明示的な参照を必要としますが、以前は他の依存ライブラリから効果的に継承できました。ただし、根本的な原因は同じです。

3
Nick