Vererbung von exportierten dll-Einsprungpunkten
-
Hallo
ich möchte eine Win32-dll mittels Visual C++ erstellen. Die Einsprungpunkte zur dll exportiere ich mit dem Schlüsselwort __declspec(dllexport) bzw. mit LINKDLL, d.h.
#define LINKDLL __declspec(dllexport)In der Basisklasse steht u.a. Folgendes:
LINKDLL virtual int Initialize (const char *Path) = 0;Muss ich in der abgeleiteten Klasse
LINKDLL INT32 Initialize (const char *Path);
schreiben, oder kann ich das LINKDLL weglassen, da der exportierte Einsprungpunkt zur dll mit vererbt wird?Vielen Dank im Voraus
-
Die abgeleitete Klasse muss nicht exportiert werden, wenn Du diese von extern nicht ansprechen möchtest.
Wenn ein Zeiger auf die abgeleitete Klasse übergeben wird, dann wird auch die virtuelle Funktion aufgerufen über die vtable!
-
eine virtual pure function (pure: "die mit =0 hinten dran") zu exportieren ist meistens sinnlos, da es sie im normalfall garnicht gibt.
-
Korrekt. Man benötigt dann sowieso nur den Zeiger auf die Klassen und die Definition der Klasse.
Man kann sich den ganzen Export der Klassen sparen wenn man konsequent Interface Zeiger verwendet (siehe COM).
Dann benötigt man nur einige kleine Factory Funktionen.