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

Visual C++ Discussion :

Problème de compilation


Sujet :

Visual C++

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

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut Problème de compilation
    Bonjour,

    je rencontre un problème lors de la compilation de mes fichiers c++ avec visual studio 2005.

    En effet, lors de la compilation de sources, une erreur de linkage apparait (error lnk2019) lorsque j'utilise une méthode que j'ai définie.

    Le plus bizarre (pour moi) c'est que cette erreur apparait lorsque la méthode est définie dans le fichier.cpp mais pas lorsqu'elle est définie directement dans le fichier.h.

    Malheureusement, je n'ai pas le droit de diffuser une seule ligne de code de ce que je fait. Je vais donc essayer de faire comprendre la structure de mon code.

    J'ai une solution dans visual studio dans laquelle apparait plusieurs projet. L'un de ces projet contient mes fichier.h et .cpp contenant la méthode que nous nommeront methode(). Dans un autre projet est développer une appli de test nommée test incluant fichier.h et faisant appel à méthode(). Si méthode() est définie directement dans le .h, je n'ai aucun problème, mais si elle l'est dans le .cpp, problème de linkage.

    J'espère avoir été suffisamment clair pour vous permettre de comprendre et de m'aider.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ta méthode ne doit pas être définie correctement dans ton .cpp.
    ou tu as un probléme de projet pas à jour .
    un nettoyage du projet et une reconstruction peut résoudre le problème.
    ou tu as plusieurs occurrences de ton .h dans tes arborescences de projet.
    ou si tu travailles avec sourcesafe un problème de mise à jour etc...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut
    Merci de ton aide.

    Citation Envoyé par farscape Voir le message
    salut,
    ta méthode ne doit pas être définie correctement dans ton .cpp.
    Ma méthode à l'air correcte et c'est la même que quand je la définie dans le .h (couper/coller. enfin pour le corps)

    Citation Envoyé par farscape Voir le message
    ou tu as un probléme de projet pas à jour .
    Ca n'est pas ça non plus

    Citation Envoyé par farscape Voir le message
    un nettoyage du projet et une reconstruction peut résoudre le problème.
    Ca ne fonctionne pas

    Citation Envoyé par farscape Voir le message
    ou tu as plusieurs occurrences de ton .h dans tes arborescences de projet.
    Non

    Citation Envoyé par farscape Voir le message
    ou si tu travailles avec sourcesafe un problème de mise à jour etc...
    Non plus, je n'utilise pas sourcesafe.

    Aurais-tu d'autres idées ?

    Merci

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    sauf si ton code a une particularité ,sans le voir difficile de répondre .
    en raisonnant par l'absurde implémenter une méthode dans un .cpp fonctionne on en est sûr ..,
    donc il faut chercher ce qui sort de l'ordinaire.
    par exemple vérifier le type des arguments utilisés pour voir si il n'y a pas de redéfinition.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut
    Bon, j'ai obtenu la permission de mes supérieurs pour publier un bout du code (très épuré) mais qui pose problème quand même.

    Tout d'abord le fichier bvh.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <string>
    using namespace std;
     
    class Bvh
    {
    public:
    	Bvh(void){}
            Bvh(string inputFileName){inputFile = inputFileName;}
            ~Bvh(void){}
     
    	void copyHeader(void);
    	void writeMatrix(void){}
     
    	void setIntputFile(string newName){inputFile=newName;}	
    	string getIntputFile(void);
     
    private:
    	string inputFile;
    };
    Ensuite le fichier bvh.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include "Bvh.h"
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h> 
    #include <fstream>
     
    using namespace std;
     
    void Bvh::copyHeader(){
    	string path = "../../DATA/";
    	cout<<path<<endl;
    }
     
    string Bvh::getIntputFile()
    {
    	return inputFile;
    }
    L'appli de test test.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
    #include <stdio.h>
    #include "Bvh.h"
    using namespace std;
     
    int 
    main(){
    	int pause;
    	Bvh bvh("bvh/unknown.bvh");
    	cout<<bvh.getIntputFile()<<endl;
    	bvh.copyHeader();
    	cin>>pause;
    	return 0;
    }
    Et enfin, les erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test.obj : error LNK2019: unresolved external symbol "public: void __thiscall Bvh::copyHeader(void)" (?copyHeader@Bvh@@QAEXXZ) referenced in function _main
    test.obj : error LNK2019: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall Bvh::getIntputFile(void)" (?getIntputFile@Bvh@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function _main
    La méthode getInputFile() est la méthode que j'avais d'abord définie dans le .h et qui pose problème dans le .cpp.
    L'autre méthode qui pose problème est la méthode copyHeader() mais je n'ai pas essayé de la définir dans le .h auparavant.

    A tous les coups, il s'agit d'une erreur idiote de ma part mais aucun de mes collègues n'arrivent à mettre le doigt dessus.

    Merci de votre aide

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut;
    essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string Bvh::getIntputFile(void)
    {
        return inputFile;
    }

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

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut
    Citation Envoyé par farscape Voir le message
    salut;
    essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string Bvh::getIntputFile(void)
    {
        return inputFile;
    }
    Bonjour,
    pas de changement. J'avais déja essayé.

    Merci

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::string Bvh::getIntputFile(void)
    {
        return inputFile;
    }
    et dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::string getIntputFile(void);

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

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut
    Bonjour,

    Bon j'ai finalement réussi à régler le problème. Un problème obscur de librairie qui n'avait pas le bon chemin pour l'inclusion dans le projet.

    En tous cas, merci de ton aide.

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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