C ++ライブラリとのリンクには多くの手間が必要であり、それを正しく行うには多くの知識と努力が必要です。C ++の学習者にとっては恐ろしいことです。
多くの場合、特定のC ++ライブラリの作成者/保守者はこれを念頭に置いて、いずれかの方法を推奨します。
言い換えると、著者/維持者がライブラリをヘッダー(* .hおよび.hppのみ)に含めるか、ソース( .h *または.c)に含めることを意図している場合、readmeでそのように明確に述べているはずです。またはドキュメント。
クロスプラットフォーム(および複数のC ++コンパイラベンダーと環境と互換性がある)に設計および保守されているライブラリには、多くの場合、メイクファイルシステムまたはビルド構成システム(CMakeなど)があります。これらのシステムは、プラットフォームの違いを滑らかにするヘッダーシムを生成し、適切なコマンドラインオプションを使用して正しい順序でソースファイルでコンパイラとリンカーを呼び出すスクリプトを生成するために使用されます。プラットフォームと構成に応じて、これらのビルドシステムは特定のヘッダーまたはソースファイルを含めるか除外するか、特定のプリプロセッサシンボルを定義または未定義にすることができます。
著者/保守者の推奨に反することは可能ですが、それには常に大規模な移植作業が必要です。その移植作業に必要な作業量は、異なるC ++環境への移植に匹敵します。
Visual C ++はプロジェクト記述ファイル(一部はXMLベース)に基づく独自のビルドシステムを使用するため、Linuxで使用されるスクリプトベースのビルドシステムとはまったく異なります。CMakeで使用されるアプローチは、CMakeが構成設定を取得し、Visual C ++プロジェクト構造全体を出力し、構成オプションを* .vcxprojファイルにベイクすることです。
Visual C ++とのC ++リンク中に問題が発生した場合、*。vcxprojファイルのビルド設定は、Visual Studio GUIを使用して(プロジェクトプロパティページダイアログを使用して)変更できます。これは、多数の重要なC ++コンパイルおよびリンク設定の意味と結果を十分に理解していることを前提としています。
今、Visual C ++を使用する最も愚かな部分:ダースの異なるサードパーティライブラリを使用している場合、それらすべてのビルド設定を変更することは、各* .vcxprojファイルに移動し、ダースのGUIで同じ変更を繰り返すことを意味します回。面倒ですが、それを正しく行う方法を知っていれば、それを行うことができます。
ほとんどのVisual C ++学習者は、エラーコードで識別されるVisual C ++コンパイラとリンカーのエラーを観察することにより、これらの設定を困難な方法で学習します。たとえば、「シンボルシンボルが複数回定義された」という表面的な意味でLNK2005を検索できますが、重複した定義は不注意なプログラミングの誤りから生じたものではなく、代わりにコンパイルおよびリンクオプションの競合または誤用。
状況に対してより具体的かつ有用な回答を提供するには、使用するライブラリの名前と、リンクエラーまたは発生したその他の問題を知る必要があります。これらの質問に対する既存の回答は、それぞれのライブラリのディスカッションボードで見つけることができます。これらの質問には、「リンクの問題」、「ウィンドウ」、「ビジュアルC ++」というタグが付けられる傾向があります。
この問題に関する初心者から専門家へのガイドは可能ですが、プロジェクト固有のものになるでしょう。さまざまなプロジェクトで選択されたさまざまな設定では、ガイドを完全に書き直す必要があります。