[solved] Symbol lookup error
-
Der Code ist ein "wenig" complex, ich versuch später noch was minimales compilierbares zu stricken. Hier erstmal die verworrene Struktur (Inkludeguards/includes removed):
class Base { public: Base() : irgendwas(5) {} protected: int irgendwas; };class Abstruse : public Base { public: Abstruse() : Base(), wasAnderes(7) {} virtual void setWasAnderes() = 0; int getWasAnderes(); protected: int wasAnderes; };class Spezi : public Abstruse { public: Spezi() : Abstruse() {} void setWasAnderes() { /* spezifische Methode zur Datenaquise */ wasAnderes = 42; } };In einer seperaten pluginin-lib PlugIt nutze ich
Spezi, in einer Methode greife ich über den geerbtenAbstruse::getWasAnderes()zu und erhalte dabei ein"undefined symbol: _ZNK12ModalityBase16captureFrequencyEv"class Spezi; class PlugIt { public: PlugiIt (Spezi * s) : spezi(s) {}; void export(); private: Spezi * spezi; };#include "base.h" #include "abstruse.h" #include "spezi.h" #include <iostream> void PlugIt::export() { std::cout << spezi->getWasAnderes(); }nm liefert:
U _ZNK12ModalityBase16captureFrequencyEvfür den Zugriff also isst das wohl wirklich nicht da. Jemand eine Idee wie ich es da rein bekomme - muss ich beim linken der lib zusätzliche gegen die Objektdateien vonBaseundAbstruselinken oder krieg ich dann doppelt definierte Fehler?Edith: Hab das ganze (Datenbankzugriff, Wrapping auf Klassen) jetzt librarisiert und die wo nötig includiert, jetzt tuts. Hätte ich vielleicht auch schneller drauf kommen können...