この記事では主に Visual Studio 2017 での静的ライブラリの作成に関する詳細を紹介します。興味のある方は参考にしてください。
ホイールの構築は強力なツールです。非常に大規模なプロジェクトを扱うことができますが、正直に言うと、小規模なプロジェクトの構成にはそれほどフレンドリーではありません(インターネット上の他のチュートリアルはまったくフレンドリーではありません)。ここでは、単純な静的ライブラリを構築するための正しいアプローチを示します。 (ところで、ソリューションの作成について少し教えてください。多くの人は、プロジェクトとソリューションの違いを理解できません。VS では、プロジェクトは基本的な実行単位であり、ソリューションには複数のプロジェクトを含めることができます - 私たちの静的ライブラリ解決策は、win32 コンソール アプリケーション コンソール
タイプを選択して静的ライブラリを選択し、プリコンパイル済みヘッダーのプリコンパイルを削除することです。ヘッダー オプション。
ヘッダー ファイルとソース ファイルを追加します。
(注意: .cpp ではなく .h ファイルのみを追加します。このようなプロジェクトは .lib ライブラリをコンパイルできません。テストすると、「xxx.lib」: 指定されたファイルを開けませんというエラーが表示されます。Orz)
(また。指定されたファイルを開けない理由の 1 つは、.lib が生成される場所が間違っていることです。ここで、ソリューション エクスプローラー->プロパティプロパティ
ページ ->出力方向出力ディレクトリデフォルトのものは Debug ディレクトリにありますが、それがどのように間違っているかは誰にもわかりません)
次に、コードを書くことができます:// MathLib.h #pragma once int add(int x, int y); // MathLib.cpp #include "MathLib.h" int add(int x, int y) { return x + y; }次に、テストするプロジェクトが必要です (最初に述べたことを思い出してください、ソリューションには複数のプロジェクトを含めることができ、それらはすべて実行ユニットです (実行ユニットを呼び出す方法については後で説明します。これは私が独自に作成した概念です))、ソリューション エクスプローラーのソリューションに新しいプロジェクトを追加します:
コンソールを選択し、プリコンパイルされたヘッダーを削除し、前と同じことを行います。これで、2 つのプロジェクトを含むソリューションが完成しました:
テストコードを書く
// Test.cpp #include "stdafx.h" #include "..\MathLib\MathLib.h" #include <iostream> int main() { std::cout << add(1, 2) << std::endl; return 0; }次に、テスト用に MathLib に
reference
を追加する必要があります。このステップの実際の機能は、ブート IDE で cl コンパイラ コマンドを使用することです。コンパイル時に、正しいリンク オプションを追加します (CSAPP には非常に刺激的な説明があります。ソース ファイル #includes にヘッダー ファイルが追加されるだけです。再配置されていないシンボルは、ライブラリ ファイル内にある必要があります (静的ライブラリの場合、Linux は .a ファイル (Windows は .lib) であり、再配置を完了するにはこれらのシンボルを見つけることが非常に重要です)。図のように、ソリューション エクスプローラーに参照を追加します
VS は、ソリューション内のプロジェクトを非常に慎重にリストします。オプションを選択した場合は、それを選択するだけです。
現時点では、Test のリファレンスに MathLib プロジェクトがあります。
次のステップは、cl コンパイラーのインクルード パスを追加することです。つまり、プリコンパイル中に MathLib.h を見つけてシンボルの導入を完了する方法です。 [テスト プロパティ] プロパティ ページ -> C++ -> 一般 -> 追加のインクルード ディレクトリでは、追加のインクルード パスは、標準ライブラリ ヘッダー ファイル ディレクトリに加えて、他の (カスタム) ヘッダー ファイルに含まれるディレクトリであり、 cl はこれらの場所に移動する必要があります。 MathLib .h を見つけます。 [OK] を選択して、MyStaticLibraryMathLib ディレクトリを追加します。 この時点ですべての準備が整いましたが、F5 のビルドと実行の結果で次のエラーが報告されました:.lib は有効な win32 アプリケーションではないため、実行できませんと表示されます。はい、もともと実行するつもりはありませんでしたが、ソリューション内の非常に多くのプロジェクトのうちどれを実行する必要があるかを VS はどのようにして知るのでしょうか? (前の実行単位を考えて、その意味を理解してください。各プロジェクトのコンパイル結果が実行可能とみなされます) 最初に追加されたプロジェクトは MathLib なので、VS はデフォルトでその出力を実行するため、これは間違いです。 VS がテスト (Test.exe) の出力を実行するようにガイドする方法を見つけます。ソリューション エクスプローラー -> MyStaticLibrary プロパティ プロパティ ページ:
単一のスタートアップ プロジェクトを Test に設定します。OK。
【関連する推奨事項】
以上がVS2017で静的ライブラリの構築が完了の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。