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 :

erreur undefined reference to


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2013
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 229
    Points : 109
    Points
    109
    Par défaut erreur undefined reference to
    Bonjour

    Je commence le c++ et je developpe sur une virtualbox avec debian

    J'ai l'erreur suivante lors de la compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ testapi.cpp -o output
    /usr/bin/ld: /tmp/cciw7NXm.o: in function `main':
    testapi.cpp:(.text+0xd9): undefined reference to `ApiAres::getAllZone()'
    collect2: error: ld returned 1 exit status

    mon fichier api.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
    //Api.cpp
     
    #include "api.hpp"
     
    //constructeur
    ApiAres::ApiAres(string url, string port)
    {
        this->url = url;
        this->port = port;
    };
     
    // std::string Api::getAllZone()
    void ApiAres::getAllZone() {
        cout << "Simulating getting all zones..." << endl;
    };
    mon fichier api.hpp
    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
    20
    //Api.hpp
    #include <iostream>
     
    using namespace std; 
     
    class ApiAres
    {
        private:
            string url;
            string port;
     
        public:
            //constructeur
            ApiAres(string url, string port) {
                cout << "url : " << url << " port : " << port << endl;
            };
     
            void getAllZone();
            // std::string getAllZone();
    };
    mon fichier de test tesapi.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
    //testapi.cpp
     
    #include <iostream>
    #include "api.hpp"
     
    int main()
    {
     
        std::string url = "https://tyradex.vercel.app/api/v1/pokemon/246";
        std::string port = "";
        ApiAres apiBdd(url,port);
        apiBdd.getAllZone();
        //std::cout << apiBdd.getAllZone() << std::endl;
        return 0;
    }
    auriez vous une idées svp ?

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 631
    Points : 10 558
    Points
    10 558
    Par défaut
    Ton code et ta ligne de commande sont mauvais

    Ta ligne de commande est mauvaise. En gros, tu ne compiles pas ton unité api (et donc tu ne vois pas que ton code est mauvais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g++ -Wall -c api.cpp
    g++ -Wall testapi.cpp api.o -o output
    Ton code est mauvais (liste non exhaustive)
    1. n'utilise pas using namespace std; et surtout pas dans 1 entête .h/ .hpp. D'autant + que tu ""ouvres"" std également dans le main via l'include.
    2. tu as défini 2 fois ton constructeur. Fusionne les 2, utilise la liste d'initialisation ApiAres::ApiAres(std::string input_url, std::string input_port): url(input_url), port(input_port) { /* ... */ }
    3. je ne suis pas fan de traces cout/ printf dans 1 entête .h/ .hpp à cause de l'include iostream.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2013
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Novembre 2013
    Messages : 229
    Points : 109
    Points
    109
    Par défaut
    bon mauvaise déclaration


    api.hpp

    au lieu de ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           public:
                //constructeur
                ApiAres(string url, string port) {
                    cout << "url : " << url << " port : " << port << endl;
                };
    il faut ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           public:
                //constructeur
                ApiAres(string url, string port);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "undefined reference to main"
    Par mortaurat dans le forum Eclipse C & C++
    Réponses: 6
    Dernier message: 29/06/2012, 15h13
  2. [g95] Erreur "undefined reference"
    Par ophicia dans le forum Fortran
    Réponses: 2
    Dernier message: 19/12/2008, 14h06
  3. erreur undefined reference to `sin'
    Par momeftah dans le forum C
    Réponses: 2
    Dernier message: 04/09/2008, 13h37
  4. [Nioub] Erreur undefined reference
    Par grabriel dans le forum Eclipse C & C++
    Réponses: 1
    Dernier message: 17/03/2008, 12h45
  5. erreur undefined reference
    Par petith dans le forum C
    Réponses: 2
    Dernier message: 13/12/2006, 17h04

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