Seite 1 von 1
Plugin und Symbole der Applikation
Verfasst: 9. August 2008 00:22
von commx
Ich habe nun eine Applikation die durch Plugins erweiterbar sein soll. Das Problem ist nun dass ich in den Plugins auf einige Objekte der Applikation zugreifen will und aufgrund dieser Tatsache beim Laden der Plugins der Fehler "undefined symbol: variable" ausgegeben wird, da die Variablen in den cpp-Dateien der Mainapplikation definiert sind und die entsprechenden headers lediglich ein extern typ variablenname; zeigen.
Welche Möglichkeiten bestehen?
Verfasst: 11. August 2008 13:00
von RHBaum
Na sowas eben nicht benutzen .....
du bindest ein "extern xyz" ein, und greifst auf die internen daten strukturen von xyz ? dann musst das xyz auch in dem binary implementieren ....
du koennst die impl (.cpp) bei deinem anderen binary auch einbinden, mit dem erfolg das 2 unterschidliche impls gebaut hasst die auf einer cpp beruhen (aender die compilereinstellungen bei einem project, und du bekommst die tollsten effekte ) ...
der einzig saubere weg ist, sowas "normal" ueber schnittstellen abzubilden, wie es sich gehoert. Dann bekommst diese ganze fuddelei nicht.
Fuer simple Typen ist das sicher overhaed, da kann man was nehmen was gleich im header definiert wird -> enums und constanten ....
Aber normal solltes du, wenn du was in dem einen binary definierst, in dem anderen binary nur drauf referenzieren, und nicht ne eigene Impl in dem bin verlangen ....
Um auf daten in anderen binaries referenzieren -> Schnittstellen !!!
extern benutzt man, um doppelte symbole beim statischen linken zu vermeiden und geinsamm genutze ressourcen in cpp dasteien pflegen zu koennen wenns ned anders geht (bessere loesung : ressourcen als wirkliche ressourcen fest zu linken) .
Beschaeftige dich bissi mehr mit symbolen, linker grundlagen, etc ....
Und das ganze gehoert auch eher nach C++ Grundlagen.
Ciao ...