Undefined reference to 'operator delete(void*)'

Ich bin neu in der C++ - Programmierung, aber arbeite in C und Java für eine lange Zeit. Ich versuche eine Schnittstelle-wie Hierarchie, in einigen seriellen Protokoll, an dem ich arbeite, und bekomme immer die Fehlermeldung:

Undefined reference to 'operator delete(void*)'

Der (vereinfachte) code folgt unten:

PacketWriter.h:

class PacketWriter {
public:
    virtual ~PacketWriter() {}
    virtual uint8_t nextByte() = 0;
}

StringWriter.h:

class StringWriter : public PacketWriter {
public:
    StringWriter(const char* message);
    virtual uint8_t nextByte();
}

Den Konstruktor und nextByte Funktionen sind implementiert StringWriter.cpp, aber sonst nichts. Ich muss in der Lage sein, zu löschen StringWriter von einem Zeiger auf eine PacketWriter, und ich habe immer verschiedene andere ähnliche Fehler, wenn ich einen Destruktor definieren für die StringWriter -, virtueller oder nicht. Ich bin sicher, es ist ein einfaches Problem, das ich Blick als Neuling.

Auch, ich Schreibe dies für einen AVR chip mit dem avr-g++ auf Windows.

Dank

Wie führen Sie den compiler ? Wenn Sie avr-gcc oder etwas ähnliches, dann sollten Sie lieber avr-g++ oder gleichwertig.
Sind Sie verknüpfen diese in einer eigenartigen Weise? Wenn Sie mit einem link gegen die übliche Laufzeit Implementierungen von operator new und operator delete sind vorhanden, aber wenn Sie etwas tun, bareback möglicherweise müssen Sie definieren diese selbst.
Dieser Fehler würde auftreten, wenn du nicht den link, den C++ - standard-Bibliotheken in die endgültige ausführbare Datei. Sind Sie verknüpft?
Ich bin mir ziemlich sicher, dass new/delete sind nicht umgesetzt, und das aus gutem Grund, es ist ein embedded system. Lesen Sie die Dokumentation ordnungsgemäß.
guter Fang: nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus . Sie können sich wahrscheinlich in diesem post als Antwort

InformationsquelleAutor Bracket | 2011-08-10

Schreibe einen Kommentar