Linux static lib プロジェクトに 3 つのファイルがあり、2 つのクラス メソッド実装ファイルで使用したい静的フィールドでリンクの問題が発生しています。class1.h、class1main.cpp、class1utils.cpp があります。class1.h は class1 と呼ばれるクラスを定義し、すべての静的メソッドと pDb と呼ばれる静的フィールドを持ちます。.cpp ファイルは、2 つのファイルに分割された class1 メソッドの実装を定義します。
class1.h で、静的を宣言します。
class class1 {
public:
static Database * pDb;
...
}
class1main.cpp では、上部に実際の静的を定義します。
Database * class1::pDb;
そのため、class1utils.cpp で次のことを実行できると考えました。
extern Database * class1::pDb;
しかし、プロジェクトを作成してライブラリを取り込むと、リンク時に pDb が複数定義されます。2番目のソースファイルで静的を参照して使用できるようにする方法を教えてもらえますか(リンクします)?
class1utils.cpp のメソッドを class1main.cpp に戻し、class1utils.cpp を取り除くと、リンクが機能します。
アドバイスをありがとう。コーリー。