IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[error] LNK2019: unresolved external symbol "void


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut [error] LNK2019: unresolved external symbol "void
    Bonjour à vous ^^

    Je suis administrateur d'un serveur privé en ligne et je me suis lancé dans le développement c++ d'un émulateur en open source.

    je compile sous windows avec visual 2003.

    d'origine l'émulateur fonctionne très bien mais je souhaiterais faire appel à des fonctions que j'ai créé moi même (donc un nouveau .cpp et un .h) vers un autre fichier .cpp

    Voilà 5 jours que je me creuse la tête sur mon amélioration, et 2 jours que je cherche d'ou vient le problème.

    j'en vient au fait (désolé pour ce long texte, mais c'est mon premier message ici..)

    lorsque je Compile la première partie de l'émulateur, tous va bien.
    lorsque je Compile la 2ème partie de l'émulateur je reçoit 4 erreur de ce type :

    error LNK2019: unresolved external symbol "void __cdecl AjoutMaxskill(class Player *)" (?AjoutMaxskill@@YAXPAVPlayer@@@Z) referenced in function "void __cdecl SendDefaultMenu_PMJ(class Player *,class Creature *,unsigned long)" (?SendDefaultMenu_PMJ@@YAXPAVPlayer@@PAVCreature@@K@Z)
    J'ai fouillé multitudes de forum et essayé beaucoup de modifications sans y trouver un remède pour mon cas.

    4 fonctions void que j'ai créé possèdent cette même erreur.

    Les lignes concernants une fonction void :
    dans le fichier Xian .cpp
    void AjoutMaxskill(Player *player)
    {

    loginDatabase.PExecuteLog("INSERT INTO `maxskill` (`guid`) VALUES (%f)", player->GetGUID());

    }
    dans le fichier Xian .h
    void AjoutMaxskill(Player *player);
    dans le fichier PMJ.cpp
    void SendDefaultMenu_PMJ(Player *player, Creature *_Creature, uint32 action )
    {

    switch (......)
    {

    case ............... :

    if (............... == 2)
    {
    ..............................


    }
    else if (............... == 1)
    {

    AjoutMaxskill(player);
    }
    Voilà rien de trop particulier, lors de la compilation tous va bien pour Xian.cpp et Xian.h , c'est PMJ.cpp qui me met l'erreur en question.

    désolé pour les "..............." c'est pour vous raccourcir les codes non concernés et pour eviter une eventuelle copie de mon idée..

    Tous les include .h nécessaires sont bien associés, rien à dire de ce coté-ci. (raison pour laquelle je ne les ai pas cités.)

    Si vous désirez une explication beaucoup plus détaillée sur l'histoire des 2 parties différentes à compiler n'hesitez pas à demander.
    Je répondrais à toute vos questions tant que je finis par résoudre ce problème un jour ^^
    Je vous remerci d'avance en espèrant avoir une aide

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour et bienvenu sur les forums de DVP

    Est-ce que le fichier source PMJ.cpp inclut bien le fichier d'en-tête Xian.h ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut
    Oui le Xian.h est bien inclu tout en haut comme il faut ^^

    #include "../../../../game/Xian.h"
    il fait partie de la première compilation et ce trouve donc dans un répertoire différent.

    pour simplifié l'explication :

    1ère compilation : l'emulateur en lui même.
    2ème compilation : l'intelligence artificielle rajouté aux créature dans le jeu.

  4. #4
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Par contre il faut "linker" tes deux parties.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut
    les 2 parties sont par défaut déjà linké, c'est un émulateur en open source que j'ai repris ^^

    je n'ai fait qu'ajouter 5 scripts .cpp dans la partie 2 faisant appel à des .h des parties 1 et 2 qui fonctionnent à 100%.
    (aussi bien dans le jeu qu'à la compile 0 erreur)

    + 1 script (PMJ.cpp) partie 2 (qui lui possède un erreur de link vis à vis des fonction Void créés dans les xian.cpp et xian.h que j'ai cité)
    et 2 scripts partie 1 (xian.cpp et xian.h) qui eux n'ont pas de problèmes lors de la compilation.

    Le problème reste toujours flou pour moi actuellement bien que je continu de faire des manip.

  6. #6
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Tu peux nous passer les lignes de commandes qui te servent à compiler ?

  7. #7
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Citation Envoyé par Predax Voir le message
    pour simplifié l'explication :

    1ère compilation : l'emulateur en lui même.
    2ème compilation : l'intelligence artificielle rajouté aux créature dans le jeu.
    Si tu compiles en plusieurs fois (deux dans ce cas précis), il y a fort à parier que le linker ne "voit" pas la fonction dans son unité de compilation (celle dont fait partie le fichier PMJ.cpp).

    Essaye de préfixer le prototype de a fonction AjoutMaxskill avec le mot clé extern puisqu'elle semble être externe à l'unité.

    The extern keyword declares a variable or function and specifies that it has external linkage (its name is visible from files other than the one in which it's defined).

Discussions similaires

  1. error LNK2019: unresolved external symbol
    Par Francixtra dans le forum Visual C++
    Réponses: 4
    Dernier message: 31/03/2011, 02h32
  2. [DDK] error LNK2019: unresolved external symbol
    Par sloshy dans le forum Windows
    Réponses: 2
    Dernier message: 27/06/2008, 22h31
  3. error LNK2019: unresolved external symbol
    Par ilimo dans le forum C++
    Réponses: 22
    Dernier message: 09/04/2006, 23h59
  4. error LNK2019: unresolved external symbol
    Par soniona dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 06/04/2006, 14h03
  5. Réponses: 4
    Dernier message: 23/04/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo