Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Programm will nicht linken.

  1. #1
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201

    Programm will nicht linken.

    Hallo, mein Programm will sich nicht linken lassen, und ich habe keine Ahnung wieso.
    g++ ` pkg-config gtk+-2.0 --cflags` -o strutil.o -c strutil.cpp
    g++ ` pkg-config gtk+-2.0 --cflags` -o accounts.o -c accounts.cpp
    g++ ` pkg-config gtk+-2.0 --cflags` -o config.o -c config.cpp
    g++ ` pkg-config gtk+-2.0 --cflags` -o main.o -c main.cpp
    g++ strutil.o accounts.o config.o main.o -o GeePodPP ` pkg-config gtk+-2.0 --libs` `curl-config --libs` -lsqlite3
    accounts.o: In function `Account::~Account()':
    accounts.cpp:(.gnu.linkonce.t._ZN7AccountD2Ev+0x12 ): undefined reference to `vtable for Account'
    accounts.o: In function `Account::Account()':
    accounts.cpp:(.gnu.linkonce.t._ZN7AccountC2Ev+0x12 ): undefined reference to `vtable for Account'
    accounts.o:(.gnu.linkonce.r._ZTI12IpodsFreepay+0x1 0): undefined reference to `typeinfo for Account'
    collect2: ld returned 1 exit status
    make: *** [GeePodPP] Error 1
    vtable? Was ist das?

    Source

    MFG

  2. #2
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    Nur mal so ins blaue geschossen !

    verwendest du (oder deine bib die verwendest) dynamic_cast und hasst vergessen RTTI beim compiler einzuschalten ?

    was ne VTable iss solltest eigentlich wissen ^^

    Ciao ...
    Geändert von RHBaum (25-11-2005 um 14:41 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Die Meldung taucht entweder auf, wenn man versucht, C++ Programme mit C zu linken, was bei dir ja nicht der Fall ist. Eine andere Möglichkeit war glaube ich, wenn man vergessen hat, virtuelle Methoden auch zu implementieren.

    Schau dir die Klasse Account nochmal genau an.

  4. #4
    Registrierter Benutzer
    Registriert seit
    28.07.2000
    Beiträge
    123
    na ja, du accountest ja da wild in der gegen herum, ;-)


    du musst dir dann nur noch im klaren werden, wann du wo was benutzt ;-)))

    Code:
     std::vector<Account*> acclist;
    in der accounts.h ....

    mal ne allgemeine frage ...
    ich dachte, dass man in c++ immer schon dafür sorge tragen muss, dass der constructor und der destructor deklariert werden ...

    die sind jedenfalls für die klasse Account.nicht deklariert, für Accounts ja ...

    außerdem hast du die klasse Account nicht der klasse Accounts bekannt gemacht ....

    na jedenfalls interpretiere ich das ganze so:

    er will einen Vector vom Typ Account * anlegen und findet den constructor nicht ...

    mmm komisch, aber die klasse scheint er zu kennen ... wirklich komisch .....

    gruesse reinhard

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Warum diese Meldung kommt hat Joghurt ja schon gesagt. Zusätzlich ist mir aufgefallen das du Include-Guards verwendets deren Namen mit zwei Unterstrichen + Großbuchstaben beginnen. Das solltest du auch sein lassen. Namen mit mehreren Unterstrichen Hintereinander sind in C++ reserviert, genauso wie solche die mit Unterstrich + Großbuchstaben beginnen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Du deklariest virtual void Account::update(), implementierst aber GtkWidget* Account::update()

  7. #7
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201
    Danke für die Antworten. Es geht auch soweit. Ich hab mich jetzt entschlossen zu Gtkmm zu wechseln, da geht vieles "einfach einfacher".

    MfG

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •