静的ライブラリ (.a 拡張子付き) をできるだけ「効果的」に使用する方法を見つけようとしています。スタティック ライブラリを調べた理由は、いくつかの .h および .cpp ファイルのコードを 1 つのファイルに入れたいからです。これにより、さまざまなプロジェクトで簡単に移動できます。
例を含むファイル geometry.h を作成しました
double hypotenuse(double, double);
および定義を含む geometry.cpp ファイル。libgeo.a ファイルを作成し、別のプログラム (main.cpp など) でテストしました。このプログラムを次のようにコンパイルしました。
g++ main.cpp -o test -L. -lgeo
エラーが発生します'hypotenuse' was not declared in this scope
。これに対する明らかな解決策は、geometry.h と同じように main.cpp に宣言を追加するdouble hypotenuse(double, double);
ことですが、ライブラリに含まれるすべてのクラスと関数に対してそれを行う必要があるのはなぜでしょうか? main.cpp に書き込むこともできまし#include "geometry.h"
たが、その場合は常にヘッダー ファイルが必要であり、ライブラリを使用したかった理由は、有用なコードを含む単一のファイルを用意することでした。
ライブラリを持つ理由は、さまざまなファイルをどこにでも持っていく必要がないようにするためだと思いましたが、必要なものすべてを再宣言する必要がある場合、.a ファイルの意味は何ですか? 見逃したものはありますか?.a ライブラリは通常どのように使用されますか?