クロス コンパイルでの静的メンバーへの未解決の参照
クロス コンパイラを使用する場合、静的メンバーへの未解決の参照に関連するエラーが発生することがよくありますメンバー。これは、静的変数がクラス ヘッダーで宣言されているが、対応する .cpp ファイルで定義されていない場合に発生します。
問題の説明:
提供されたコード例を検討してください:
class WindowsTimer { public: WindowsTimer() { _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };
静的変数 _frequency はクラス定義内で宣言されていますが、定義されていません。コードをビルドしようとすると、リンカーは _frequency への参照を解決できず、未定義の参照エラーが発生します。
解決策:
この問題を解決するには、静的変数は、対応する .cpp ファイルで定義する必要があります。これは次のように行うことができます:
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
推論:
静的変数は、インスタンス変数とは異なり、クラスのすべてのインスタンス間で共有されます。したがって、プログラム内で単一の定義が必要です。 .cpp ファイルで静的変数を定義すると、リンカーはその変数への参照を正常に見つけて解決できます。
追加メモ:
以上がクロスコンパイル中に「静的メンバーへの未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。