Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 2 Linkerfehler

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
27.08.2006, 21:20 Uhr
Karldin Shinowa
Professional Noob


[Linker error] undefined reference to `boost::gregorian::greg_month::get_month_map_ptr()'

und

[Linker error] undefined reference to `vtable for CEvent'

Tips wo ich Fehler suchen kann??
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.08.2006, 21:26 Uhr
~Blubber2063
Gast


Bist du denn sicher das du alle erforderlichen Bibliotheken mitlinkst ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.08.2006, 21:29 Uhr
Karldin Shinowa
Professional Noob


CEvent is aus keiner lib und bei boost find ich kein bin verzeichniss...
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.08.2006, 21:32 Uhr
Spacelord
Hoffnungsloser Fall


Alle lib´s mitgelinkt?Bzw. kennt dein Compiler den Pfad zu den libs?

Gruss Spacelord

Bearbeitung:
zu spät...

--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 27.08.2006 um 21:33 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.08.2006, 21:36 Uhr
~Blubber2063
Gast


Also bei dem CEvent fehlt die Vtable, woran das liegt keine Ahnung. Wenn da kein Lib Verzeichnis ist, hast du dann vielleicht den Quellcode, so dass du den mitcompilieren kannst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.08.2006, 21:36 Uhr
Spacelord
Hoffnungsloser Fall


Eigentlich solltest du nen lib Verzeichniss in deinem boost Ordner haben.
Hat es beim compilieren irgendwelche Probleme gegeben?

Bearbeitung:
Fuck...schon wieder!

--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 27.08.2006 um 21:38 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.08.2006, 21:43 Uhr
Karldin Shinowa
Professional Noob


also hab in devcpp bei verzeichnissen das include verzeichniss von boost und bei bibliotheken
boost/libs/
Noch was CEvent is ne Oberklasse für 4 klassen
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 27.08.2006 um 21:47 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.08.2006, 23:13 Uhr
enriico



ich werde einfach nicht ganz schlau aus deiner fehlerbeschreibung?
geht bei dir die arbeit mit boost nicht oder handelt es sich um einen komplett anderen fehler?



1. Mit welcher Entwicklungsumgebung arbeitest du?
2. kannst du dieses Beispiel bei dir laufen lassen?

C++:
/* Short example that calculates the number of days since user was born.
* Demonstrates comparisons of durations, use of the day_clock,
* and parsing a date from a string.
*/


#include "boost/date_time/gregorian/gregorian.hpp"
#include <iostream>

int
main()
{
  
  using namespace boost::gregorian;
  std::string s;
  std::cout << "Enter birth day YYYY-MM-DD (eg: 2002-02-01): ";
  std::cin >> s;
  try {
    date birthday(from_simple_string(s));
    date today = day_clock::local_day();
    days days_alive = today - birthday;
    days one_day(1);
    if (days_alive == one_day) {
      std::cout << "Born yesterday, very funny" << std::endl;
    }
    else if (days_alive < days(0)) {
      std::cout << "Not born yet, hmm: " << days_alive.days()
                << " days" <<std::endl;
    }
    else {
      std::cout << "Days alive: " << days_alive.days() << std::endl;
    }

  }
  catch(...) {
    std::cout << "Bad date entered: " << s << std::endl;
  }
  return 0;
}

//output
//Enter birth day YYYY-MM-DD (eg: 2002-02-01): 1983-10-14
//Days alive: 8353

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.08.2006, 00:16 Uhr
~Blubber2063
Gast


Die Fehlerbeschreibung des Linkers ist eindeutig, für das boost Zeug hat er eine oder mehrere Libs nicht mit dazugelinkt, es reicht nicht die im Pfad zu haben, der Linker muss auch wissen was er aus dem Pfad linken soll. Und bei CEvent fehlt vermutlich entweder auch ein Objekt oder er hat irgendwo bei der Veerbung und dem virtual nicht aufgepasst, sonst kann ich mir das mit der fehlenden Referenz zur Vtable nicht erklären.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.08.2006, 12:44 Uhr
Karldin Shinowa
Professional Noob



Zitat von enriico:
1. Mit welcher Entwicklungsumgebung arbeitest du?
2. kannst du dieses Beispiel bei dir laufen lassen?



1. DevCpp (noch :twisted: )
2. Nein aber ein einfacheres hat gefuntzt

Boost befindet sich bei mir in nem ordner namens boost. Habe jetzt über Projektoptionen-Verzeichnisse dazu:
bei Bibliotheken E:\Progen\Libs\boost\libs
bei Includes E:\Progen\Libs\boost\libs

*.a bzw *.lib files finde ich keine. Ich schätze mal die muss ich erst mit make erzeugen oder? wo befindet sich das Makefile??


Zitat:

Und bei CEvent fehlt vermutlich entweder auch ein Objekt oder er hat irgendwo bei der Vererbung und dem virtual nicht aufgepasst, sonst kann ich mir das mit der fehlenden Referenz zur Vtable nicht erklären.



Wie meinst fehlt ein Objekt. CEvent ist ne abstracte Klasse-> kann davon keine Objekte geben.
Wie virtual nicht aufgepasst. Habe in der Oberklasse das virtual und in den Unterklassen auch. Außerhalb der vererbten klassen also die implementierungen der virtual funktion da darf ich ja kein virtual davorstellen sonst gibt er mir nen Fehler. Bsp:

C++:
//CEvent.h
#ifndef CEVENT_H
#define CEVENT_H

#include<string>
#include<iostream>

class CEvent
{
   public:
      bool ignore;
      
      virtual void checkAndSet();
      
      void setText(std::string text)
      {
         this->text=text;
      }

      void show()
      {
         std::cout<<text<<"\n";
         if(daysLeft==0)
         {
            std::cout<<"HEUTE ";
            return;
         }
         else if(daysLeft>0)
         {
            std::cout<<"IN "<<daysLeft;
         }
         else if(daysLeft<0)
         {
            std::cout<<"VOR "<<daysLeft;
         }
         std::cout<<"\n\n";
      }

   protected:
      int daysLeft;
      std::string text;
};

#endif




C++:
//CPointEvent.h
#ifndef CPOINTEVENT_H
#define CPOINTEVENT_H

#include"CEvent.h"

#include "boost/date_time/gregorian/gregorian.hpp" //class date

using namespace boost::gregorian;

class CPointEvent: public CEvent
{
   private:
      date PointDate;

   public:
      virtual void checkAndSet();
      
      CPointEvent(date PointDate);
};

#endif




C++:
//CPointevent.cpp
#include"CPointEvent.h"

extern date CurrentDate;

////////////////////////////////////////////////////////////////////////////////
void CPointEvent:: checkAndSet()
{
   if(CurrentDate != PointDate)
   {
      ignore=true;
      return;
   }
   else
   {
      ignore=false;
      daysLeft= 0;
   }
}

////////////////////////////////////////////////////////////////////////////////
CPointEvent:: CPointEvent(date PointDate)
   :PointDate(PointDate)
{

}


--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 28.08.2006 um 12:45 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: