erreur LNK2019: symbole externe non résolu “” référencé dans la fonction
Je suis actuellement à obtenir l'erreur suivante lorsque je compile mon code:
erreur LNK2019: symbole externe non résolu "public: void __thiscall Agent::printSelf(void)" (?printSelf@Agent@@QAEXXZ) référencé dans la fonction "public: void __thiscall Monde::processMouse(int,int,int,int)" (?processMouse@Monde@@QAEXHHHH@Z) dans le Monde.obj
Voici mon code
De l'Agent.h:
class Agent
{
public:
Agent();
void printSelf();
Agent.cpp:
void Agent::printSelf()
{
printf("Agent species=%i\n", species);
for (int i=0;i<mutations.size();i++) {
cout << mutations[i];
}
}
GLView.cpp:
void GLView::processMouse(int button, int state, int x, int y)
{
if(world->isDebug()) printf("MOUSE EVENT: button=%i state=%i x=%i y=%i\n", button, state, x, y);
if(button==0){
int wx= (int) ((x-conf::WWIDTH/2)/scalemult-xtranslate);
int wy= (int) ((y-conf::WHEIGHT/2)/scalemult-ytranslate);
world->processMouse(button, state, wx, wy);
}
mousex=x; mousey=y;
downb[button]=1-state;
}
void World::processMouse(int button, int state, int x, int y)
{
if (state==0) {
float mind=1e10;
float mini=-1;
float d;
for (int i=0;i<agents.size();i++) {
d= pow(x-agents[i].pos.x,2)+pow(y-agents[i].pos.y,2);
if (d<mind) {
mind=d;
mini=i;
}
}
if (mind<1000) {
//toggle selection of this agent
for (int i=0;i<agents.size();i++) {
if(i!=mini) agents[i].selectflag=false;
}
agents[mini].selectflag= !agents[mini].selectflag;
agents[mini].printSelf();
setControl(false);
}
}
}
Im assez perplexe. Je n'ai pas travaillé sur ce code dans un temps long, donc je ne sais pas ce qui a changé à cause de cela. Quelqu'un a vu quelque chose de mal?
Êtes-vous compilation et la liaison de la
Visual Studio est feuilletée. Parfois, un "tout reconstruire" fera l'affaire, parce que l'augmentation de recompiler n'est pas la reconstruction de ce qu'il devrait. Faire
s'il vous plaît pourriez-vous poster Monde::processMouse code?
J'ai ajouté la bonne méthode processMouse
cpp
fichier? Est la définition de la classe est-elle valide? Je ne vois pas de parenthèse.Visual Studio est feuilletée. Parfois, un "tout reconstruire" fera l'affaire, parce que l'augmentation de recompiler n'est pas la reconstruction de ce qu'il devrait. Faire
Agent.cpp
est en fait dans le projet et pas juste un fichier dans le répertoire.s'il vous plaît pourriez-vous poster Monde::processMouse code?
J'ai ajouté la bonne méthode processMouse
OriginalL'auteur user2472852 | 2013-06-11
Vous devez vous connecter pour publier un commentaire.
Cause la plus probable est que vous n'êtes pas le lien de l'objet créé à partir de
Agent.cpp
.Vous devriez vérifier pour s'assurer que c'est une partie du projet, et que vous utilisez la bonne version, compilé avec ce compilateur actuel (puisque vous dites que vous n'avez pas touché depuis un certain temps, il se peut que les objets ont été construits avec une ancienne version de compilateur, ce qui pourrait le rendre incompatibles - nom différent, d'amputation des méthodes, par exemple).
La première chose à essayer (une fois que vous avez mis en place tous les bons fichiers sont dans le projet) est un nettoyage complet et construire.
Sur quelques autres points:
L'erreur se produit dans
World::processMouse
ce qui signifie que la source deGLView::processMouse
est probablement pas pertinent.Je trouve votre mélange de
printf
etcout
peu ... dérangeant. Vous devriez probablement éviterprintf
graves pour la programmation en C++. Il fonctionne, mais il est principalement destiné à l'héritage de support de C.Nettoyer et reconstruire travaillé à ma grande surprise, car je pensais que j'avais déjà essayé. Merci!
OriginalL'auteur paxdiablo
Observé même problème dans Visual studio 2008.
Propre, suivie par la Reconstruction a fonctionné pour moi.
OriginalL'auteur New-bie