Référence non résolue à un membre statique dans la compilation croisée
Lorsque vous travaillez avec des compilateurs croisés, il est courant de rencontrer des erreurs liées à des références non résolues à des compilateurs statiques. membres. Cela se produit lorsqu'une variable statique est déclarée dans un en-tête de classe mais n'est pas définie dans le fichier .cpp correspondant.
Explication du problème :
Considérez l'exemple de code fourni :
class WindowsTimer { public: WindowsTimer() { _frequency.QuadPart = 0ull; } private: static LARGE_INTEGER _frequency; };
La variable statique _fréquence est déclarée dans la définition de la classe mais n'est pas définie. Lors de la tentative de création du code, l'éditeur de liens ne parvient pas à résoudre la référence à _fréquence, ce qui entraîne une erreur de référence non définie.
Solution :
Pour résoudre ce problème, l'éditeur de liens La variable statique doit être définie dans le fichier .cpp correspondant. Cela peut être fait comme suit :
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
Raisonnement :
Les variables statiques, contrairement aux variables d'instance, sont partagées entre toutes les instances d'une classe. Ils nécessitent donc une définition unique dans le programme. En définissant la variable statique dans le fichier .cpp, l'éditeur de liens peut localiser et résoudre avec succès la référence à celle-ci.
Notes supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!