8
votes

C ++ Continuer à obtenir une erreur LNK2019: Symbole externe non résolu

J'ai essayé de google, mais je reviens toujours avec des problèmes différents. Je reçois 3 externes non résolus lorsque j'essaie de compiler ce programme: xxx

dyninttack.h xxx

dynintStact.cpp xxx

main.cpp xxx


0 commentaires

3 Réponses :


16
votes

Vous devez mettre toutes les implémentations de modèle que vous avez dans votre fichier .CPP dans le fichier d'en-tête ou dans un fichier inclus par l'en-tête. Et n'essayez pas de compiler le fichier de mise en œuvre. Certains systèmes tentent de compiler des fichiers avec un suffixe .CPP. Le compilateur doit voir le code afin d'instancier les modèles.


5 commentaires

Si j'avais une livre pour chaque fois que je vois cette question


@Edchum ou un uppote :-)


@juanchopanza Yep, 'Tis me dire que cela vous a susceptible de vous élever, il semble que nous obtenons ces erreurs de liaison de modèles tous les 2-3 jours


Très frustrant! C'est seulement sur les modèles?


@Chad oui. Pensez aux modèles comme code partiel nécessitant des arguments de modèles spécifiques au moment de la compilation afin d'être instanciés. Le compilateur rend fondamentalement du code du modèle. Cela doit arriver avant la compilation. J'espère que cela a eu un sens ...



4
votes

au bas de DynIntstack.h, mettez

#include <DynIntStack.cpp>


0 commentaires

-1
votes

La solution la plus simple au problème est la suivante:

Où que vous souhaitiez inclure votre classe de modèle, par exemple. "DynIntstack.h" plutôt faire "DynIntstack.cpp". par exemple. dans votre principal.cpp ci-dessus.

simple comme ça, pas besoin de changer d'autre chose.


2 commentaires

Pourquoi cette réponse a-t-elle voté depuis que la solution fonctionne réellement?


D'autres réponses disent la même chose et 2 ans plus tôt.