undefined reference to...

Dieses Thema im Forum "C/C++" wurde erstellt von macke_a, 22.01.2007.

  1. #1 macke_a, 22.01.2007
    macke_a

    macke_a Mitglied

    Dabei seit:
    12.01.2007
    Beiträge:
    28
    Zustimmungen:
    0
    Hallo ! Ich bin ebenfalls ein Neuling und habe diese selben Probleme, wie manch anderer hier. Allerdings habe ich leider keinen nennenswerten Ansatz gefunden, wie ich eine Lösung bekommen kann. Es wäre nett, falls jemand von Euch kurz über meinen Quelltext schauen kann um mir ne eventuell einen Lösungsansatz mitteilen kann.

    #include "sdkconstants.h"
    #include "TomTomAPI.h"
    #include "TomTomGoFileLayer.h"
    #define CLIENT_NAME "client"

    int main()
    {
    int res;
    MTomTomCommunicationLayerInterface *mycomms = DEFAULT_TRANSPORTATION_LAYER(CLIENT_NAME,2005,TOMTOM_TCPIP_PORT);
    CTomTomAPI api(*mycomms);
    CTomTomAPI::TError err;
    res = api.FlashMessage(&err, "Hello!", 3000);
    delete mycomms;
    return 0;
    }

    Soweit dies und nun die folgende Fehlermeldung:

    flash.o(.text+0x1C): In function 'main':
    : undefined reference to `CTomTomFileLayer::New(char const*,char const*,int)'
    flash.o(.text+0x54): In function 'main':
    : undefined reference to ´CTomTomAPI::Flash Message(CTomTomAPI::TError*,char*,int)'
    collect2: ld returned 1 exit status

    Kann mir jemand diese etwas besser erklären, damit ich ungefähr ne Richtung habe, wo ich meine Fehler suchen muss..?
    Danke im Vorraus für Eure Hilfen!!!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Eine 'undefined reference' ist ein linker-Fehler und deutet i.d.R. darauf hin, dass eine Funktion o.ae. zwar deklariert, jedoch nicht definiert ist.
    In Deinem Fall enthalten die Tom-Header dateien, die in den include-direktiven stehen, wohl die entsprechenden Funktionen drin, jedoch nur deren Deklaration.
    Das bedeutet, Du musst rausfinden, wie die entsprechende Bibliothek heisst und die beim Kompilieren mitangeben. Ich kenne tomtom nicht, daher ein anderes Beispiel, das Dir hoffentlich weiterhilft:

    In math.h sind Funktionen wie exp, sin, usw. deklariert. Damit das Programm den Sinus jedoch tatsaechlich auch berechnen kann, muss man dem Kompiler mitteilen, dass er (oder besser der Linker) in der Bibliothek libm.a nachgucken soll.
    Deswegen muss man sowas mit 'gcc -o myprog myprog.c -lm' kompilieren.

    Mit anderen Worten, falls es auf Deinem System so etwas wie libtomtom.a gibt, dann gib dem Kompiler noch die Option '-ltomtom' mit.
     
  4. #3 macke_a, 22.01.2007
    macke_a

    macke_a Mitglied

    Dabei seit:
    12.01.2007
    Beiträge:
    28
    Zustimmungen:
    0
    @rikola
    Danke für Deinen Beitrag. Du hast nicht ganz unrecht mit Deiner Vermutung. Es gibt noch einen Hinweis. Allerdings kann ich diesen nicht richtig interpretieren. Also Englisch kann ich lesen, nur der Umgang mit C++ bereitet mir etwas Schwierigkeiten.
    ### Beitrag-Anfang ###:

    To communicate with the TomTom GO, a communication object has to be set up first. This is done through :

    MTomTomCommunicationLayerInterface *mycomms =
    DEFAULT_TRANSPORTATION_LAYER(CLIENT_NAME,2005,TOMTOM_TCPIP_PORT);

    where

    * CLIENT_NAME is defined in the example as "client"
    * 2005 is the port to listen to when using the TCP/IP layer. Currently TCP/IP is not supported.
    * TOMTOM_TCPIP_PORT is defined in sdkconstant.h. Currently TCP/IP is not supported.
    * DEFAULT_TRANSPORTATION_LAYER is defined in sdkconstants.h as:

    #define DEFAULT_TRANSPORTATION_LAYER(appname,thisport,otherport)
    CTomTomFileLayer::New(appname)

    So communication object "mycomms" is defined as an instance of the class MTomTomCommunicationLayerInterface. This class provides the means to send information to and receive information from the navigation application.

    The method New, which is defined for the class CTomTomFileLayer, creates the communication object for use on the TomTom GO, and establishes a connection with the application.

    ### Beitrag-Ende ###
    Dort steht etwas von einer Objekt Datei. Nur wie soll ich diese erstellen?
    Wäre sehr nett, wenn Du mir dafür ne Hilfe geben könntest!!!!
    Danke im Vorraus!!
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich habe nach zweimaligem Durchlesen nichts von einer Objektdatei gefunden, nur von Objekten. Ein Objekt ist ein haeufiger Begriff, wenn man mit c++ programmiert, allerdings kann ich Dir hier keinen Kurs in C++ geben ;-)

    Ausserdem sollte Dein zweiter Code-Ausschnitt nichts mit der urspruenglichen Fehlermeldung zu tun haben. Wenn er es taete, wuerdest Du eher Kompiler- und keine Linker-Fehler bekommen.
     
  6. #5 macke_a, 22.01.2007
    macke_a

    macke_a Mitglied

    Dabei seit:
    12.01.2007
    Beiträge:
    28
    Zustimmungen:
    0
    @rikola
    Natürlich hast Du recht! Ich habe einen zusätzlichen Verweis gefunden, der mir weitere Lib einführt! Das Programm läßt sich jetzt auch linken und ich habe jetzt meine Lösung... Juhuuu

    Allerdings was verstehen die denn jetzt unter einem "Communications Objekt"?
    To communicate with the TomTom GO, a communication object has to be set up first. This is done through : ...

    Dann habe ich diesen Abschnitt nicht richtig verstanden, kann mir vielleicht jemand dieses erklären? Oder sehe ich den Wald vor lauter Bäume nicht mehr?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich denke, dass mit diesem Funktionsaufruf gewisse Parameter initialisiert werden, auf die dann alle anderen TomTomGo-Funktionen sich beziehen koennen, da Du ja mit einem bestimmten Geraet kommunizieren moechtest und die Signale nicht irgendwohin schicken. Genauer weiss ich es in dem Fall jedoch auch nicht, da ich, wie gesagt, TomTomGo ueberhaupt nicht kenne.
     
  9. #7 macke_a, 23.01.2007
    macke_a

    macke_a Mitglied

    Dabei seit:
    12.01.2007
    Beiträge:
    28
    Zustimmungen:
    0
    @rikola
    Danke auf jeden Fall für Deine Beiträge!!

    Ich habe die Lösung gestern Abend nach zwei Tagen endlich gefunden....
    Well done...
    mfg macke_a
     
Thema:

undefined reference to...

Die Seite wird geladen...

undefined reference to... - Ähnliche Themen

  1. Noch ein 'undefined reference to'-Problem

    Noch ein 'undefined reference to'-Problem: Servus alle Seit langem versuche ich, dsniff 2.3 auf meinem Suse 10.1 (gcc 4.1.0) Rechner zu compilieren+installieren. Nach einigen Hürden habe...
  2. undefined reference beheben

    undefined reference beheben: Hi, ich will das Programm dab.c compilieren (Quelle: http://www.2600.org/code/221/dab.c) bekomme aber folgende Fehlermeldung beim ausführen von...
  3. 'libraryname': undefined reference to 'functionname'

    'libraryname': undefined reference to 'functionname': Hallo zusammen, Erst mal das Allgemeine: Ich benutze SuSE 10.3 als Betriebssystem und Eclipse als IDE. Meine C++ Kenntnisse sind nicht wirklich...
  4. undefined reference

    undefined reference: Hallo alle zusammen, Ich hab da so ein nerviges Problem mit der Installation von Rythmbox Music Player. Da ich noch Dapper Drake habe wollte ich...
  5. gtk+extra undefined reference

    gtk+extra undefined reference: Ich hab ein problem mit gtk+extra ich will einfach nur ein testprogramm zum laufen bringen, nix besonderes ich will nur mal was zum laufen...