1

私は(C#のバックグラウンドから)C ++開発に取り組んでいますが、C ++プロジェクト設定(Visual Studio)のライブラリディレクトリの違いは何ですか?

ここに画像の説明を入力してください

リンカの「入力」では、ライブラリも提供できます。

これらの間に根本的な違いはありますか?

4

2 に答える 2

3

この設定はVS2010で少し混乱しましたが、以前のバージョンでははるかに明確でした。スクリーンショットに表示されている設定は、[ツール]+[オプション]にあります。これはコアインテントを示しており、VisualStudioとそのコンポーネントのセットアップによって決定されるディレクトリが含まれています。CRT、MFC、ATL、およびSDKライブラリの場所。

リンカ+入力+追加の依存関係の設定は重要です。ここでは、リンカがリンクする必要のある.libファイルを正確に指定します。.libファイルのパスを指定して実行できます。ただし、.libファイルの名前のみを指定してから、追加のライブラリディレクトリを編集して、それらの.libファイルを検索する場所をリンカーに指示することも珍しくありません。これは、たとえば、Boostのインストール場所が常に同じであるとは限らない場合、またはBoostのあるバージョンから別のバージョンに切り替えたい場合に便利です。

要約すると:

  • リンカー+入力+追加の依存関係:リンクする必要のある.libファイルを追加します
  • リンカー+一般+追加のライブラリディレクトリ:.libsのパスを指定しなかった場合にのみ使用します
  • VC ++ディレクトリ:それを台無しにしないでください

最後の2つの箇条書きは、リンカーがリンクする必要のある.libファイルではなく、ディレクトリのみを指定していることに注意してください。最初の箇条書きは、実際の.libファイルを指定します。MSVCプログラマーを開始する際に常に混乱するのは、リンカーが、[追加の依存関係]設定で明示的に指定せずに、重要な.libファイルを見つける方法を魔法のように知っていることです。

残念ながら、これはVisualC++の非ビジュアル部分です。プロジェクトで、設定を使用せずにリンカがリンクする必要のある.libファイルを指定する方法は2つあります。1つ目は、プロジェクトを開始するために選択したプロジェクトテンプレートです。プロジェクトのデフォルト設定を指定するファイルであるプロジェクトプロパティシートを使用します。View = Other Windows +PropertyManagerで表示されます。重要なのは「コアWindowsライブラリ」です。これは、kernel32.libやuser32.libなどの重要なWindows.libファイルをリンクするための追加の依存関係設定を設定します。これらの設定は、プロジェクトによって「継承」されます。それ以外の場合は、「NoInherit」に遭遇した場合に意味を与えます。

2番目の重要な方法は、#pragmaコメントディレクティブです。ソースコードで使用されるリンカディレクティブを挿入します。「lib」の種類は重要です。これは、リンカーに.libファイルをリンクするように指示します。リンカの[追加の依存関係]設定で明示的に指定したものに加えて。その良い例はvc/atlmfc / include/afx.hです。「#pragmacomment」を検索します。コンパイラ固有の設定に応じて、適切なmfc.libファイルを選択するマクロスープに注意してください。そして、MFCがリンクする必要のある追加のWindows.libファイルの束。

C ++ビルドモデルは、曲がりくねった小さなパッセージの迷路でいっぱいです。IDEは、成功の落とし穴に陥らせようとしますが、その過程で、次のレベルの理解を得るために重要なことを隠します。C#でも違いはありません。Reverse()拡張メソッドがO(n)ストレージを消費しないようにする方法を知るには、掘り下げる必要があります。

于 2012-07-08T18:50:38.503 に答える
0

ほとんどの(すべてではない)ライブラリには、2セットのファイルが付属しています。

  • ヘッダーファイルは、ライブラリを使用しているソースコードにインクルードされ、関数、クラス、定数、またはその他の必要なものの宣言を提供します。

  • ライブラリファイルは、ライブラリのコードを含むバイナリコードです。これらは、リンカーが最終的な実行可能ファイルをアセンブルするときに使用されます

于 2012-07-08T18:40:06.950 に答える