152 votes

Symbole externe non résolu sur les membres de la classe statique

C'est très simple :

J'ai une classe qui se compose principalement de membres publics statiques, de sorte que je peux regrouper des fonctions similaires qui doivent encore être appelées par d'autres classes/fonctions.

Quoi qu'il en soit, j'ai défini deux variables statiques de type char non signé dans la portée publique de ma classe. Lorsque j'essaie de modifier ces valeurs dans le constructeur de la même classe, j'obtiens une erreur "unresolved external symbol" à la compilation.

class test 
{
public:
    static unsigned char X;
    static unsigned char Y;

    ...

    test();
};

test::test() 
{
    X = 1;
    Y = 2;
}

Je suis nouveau dans le domaine du C++, alors allez-y doucement. Pourquoi est-ce que je ne peux pas faire ça ?

0voto

Dans mon cas, j'utilisais un mauvais lien.
Il s'agissait de c++ géré (cli) mais avec une exportation native. J'ai ajouté au linker -> input -> assembly link resource la dll de la bibliothèque à partir de laquelle la fonction est exportée. Mais l'édition de liens en c++ natif nécessite un fichier .lib pour "voir" correctement les implémentations en cpp, ce qui m'a aidé à ajouter le fichier .lib à linker -> input -> additional dependencies.
[Habituellement, le code géré n'utilise pas l'exportation et l'importation de dll, il utilise des références, mais c'était une situation unique].

-2voto

Vinay Y S Points 182

Se référer à http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.11 Vous voudrez peut-être lire le reste de la FAQ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X