Linker fehler bei Vererbung



  • Ich habe diesen Fehler

    E:/Daten/Dev/SVN/library/source/PiezoJena/example/src/mainwindow.cpp:27: undefined reference to `CommonPositioningController::addStage(CommonPositioningController::PositioningStage, int)'

    bei diesem Code:

    piezoController->addStage(CommonPositioningController::X, 0);
    

    wobei gilt:

    class PIEZOJENADDRIVE_EXPORT PiezoJenaController
        : public QObject
        , public CommonPositioningController
    

    addStage ist nur in CommonPositioningController definiert. piezoController ist vom Type PiezoJenaController.

    Warum is nun addStage unbekannt?



  • Es ist nicht unbekannt, sondern undefiniert.
    Wo implementierst du die Funktion? Wird die Datei auch kompiliert und mitgelinkt?


  • Mod

    Wenn es compiliert, ist die Funktion an sich bekannt. Offensichtlich findet der Linker die entsprechende Funktion nicht. Wurde sie auch implementiert? Und die Objektdatei mit gelinkt?



  • Offensichtlich ist es nicht definiert. Sonst würde der Linker nicht meckern. Oder hast Du vergessen, die CPP-Datei mit der Definition in Dein Projekt einzubinden?

    Diese Fehlermeldung besagt eindeutig und nur das, daß die Funktion nicht definiert ist. Eine andere Bedeutung hat sie nicht. Natürlich kann der Linker die Definitionen nur darin suchen, was Du ihm vorgesetzt hast.



  • Danke für die Hinweise, ich hatte schlicht vergessen zu definieren, dass diese Klasse aus der DLL geladen werden muss. Danach hat es kompiliert.


Anmelden zum Antworten