静的メンバーへの未定義の参照
提供されたコード スニペットでは、静的メンバー変数 _frequency が WindowsTimer クラス内で定義されています。ただし、クロス コンパイラを使用してコードをコンパイルしようとすると、次のエラーが発生します。
undefined reference to `WindowsTimer::_frequency'
このエラーは、リンカーがリンク中に静的メンバー変数の定義を見つけられないことを示します。その理由は、静的メンバー変数はコンパイラによって自動的に初期化されず、その定義はソース ファイルで明示的に指定する必要があるためです。
解決策:
このエラーを解決するには、静的メンバー変数 _frequency の定義をプログラムのソース ファイルの 1 つで提供する必要があります。これを行うには、.cpp ファイルに次の行を追加します。
LARGE_INTEGER WindowsTimer::_frequency;
静的メンバー変数の定義を提供することで、リンカーはリンク中にその変数への参照とコンパイル エラーを正常に解決できます。
前の例では、_frequency.QuadPart = を使用してクラス宣言内の _frequency の定義を変更しようとしていることに注意することが重要です。 0ull または static LARGE_INTEGER _frequency.QuadPart = 0ull では問題は解決されません。これは、コンパイラーが依然としてクラス定義の外側で静的メンバー変数を明示的に定義する必要があるためです。
以上がクロス コンパイラーが「WindowsTimer::_frequency への未定義の参照」を生成するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。