C++ error LNK2019 mit Konstruktoren und Destruktoren in abgeleiteten Klassen

Ich habe zwei Klassen, eine geerbt von den anderen. Wenn ich kompilieren möchte, bekomme ich folgenden Fehler:

Einheit.obj : error LNK2019: nicht aufgelöstes externes symbol "public: __thiscall Utility::Parsables::Base::Base(void)" (??0Base@Parsables@Dienstprogramm@@QAE@XZ) referenced in function "public: __thiscall Utility::Parsables::Person::Person(void)" (??0Entity@Parsables@Dienstprogramm@@QAE@XZ)

Einheit.obj : error LNK2019: nicht aufgelöstes externes symbol "public: virtual __thiscall Utility::Parsables::Base::~Base(void)" (??1Base@Parsables@Dienstprogramm@@UAE@XZ) referenced in function "public: virtual __thiscall Utility::Parsables::Person::~Person(void)" (??1Entity@Parsables@Dienstprogramm@@UAE@XZ)

D:\Programming\Projects\Caffeine\Debug\Caffeine.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise

Ich kann wirklich nicht herausfinden, was Los ist.. kann jemand sehen, was ich falsch mache? Ich verwende Visual C++ Express 2008. Hier sind die Dateien..

"include/Extras/Parsables/Base.hpp"

#ifndef CAFFEINE_UTILITY_PARSABLES_BASE_HPP
#define CAFFEINE_UTILITY_PARSABLES_BASE_HPP

namespace Utility
{
 namespace Parsables
 {
  class Base
  {
  public:
   Base( void );
   virtual ~Base( void );
  };
 }
}

#endif //CAFFEINE_UTILITY_PARSABLES_BASE_HPP

"src/Utility/Parsables/Base.cpp"

#include "Utility/Parsables/Base.hpp"

namespace Utility
{
 namespace Parsables
 {
  Base::Base( void )
  {
  }

  Base::~Base( void )
  {
  }
 }
}

"include/Extras/Parsables/Person.hpp"

#ifndef CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP
#define CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP

#include "Utility/Parsables/Base.hpp"

namespace Utility
{
 namespace Parsables
 {
  class Entity : public Base
  {
  public:
   Entity( void );
   virtual ~Entity( void );
  };
 }
}

#endif //CAFFEINE_UTILITY_PARSABLES_ENTITY_HPP

"src/Utility/Parsables/Entity.cpp"

#include "Utility/Parsables/Entity.hpp"

namespace Utility
{
 namespace Parsables
 {
  Entity::Entity( void )
  {
  }

  Entity::~Entity( void )
  {
  }
 }
}
  • Sind alle diese Dateien in das Projekt einbezogen? Siehst du Sie kompilieren?
  • Ja, Sie sind alle enthalten, und kompilieren Sie in Ordnung.
  • versuchen Sie, loszuwerden, das namespaces
  • Nur ein c & p eine Antwort, die ich gepostet etwas weiter unten: "ich habe gerade überprüft und erinnerte mich an etwas, ich habe zwei Dateien, die beide mit dem Namen Base.cpp sind Sie aber in verschiedenen Verzeichnissen. Ich sehe ein kompilieren, aber nicht zwei. Könnte das das problem sein?"
  • Sicher. Erste, was zu tun ist, um sicher zu sein, was Sie verlinken. Benennen Sie jede verdächtige Datei, und überprüfen Sie das Ergebnis.
  • Yep behoben, danke.

InformationsquelleAutor BLH | 2010-05-01
Schreibe einen Kommentar