Hallo,
du programmierst in C++, oder?
Du solltest dafür dann eine abstrakte Klasse (pure virtual interface) deklarieren:
Quelltext
1: 2: 3: 4: 5:
| class Base { virtual void foo(int bar) = 0; virtual int boo(void* far) = 0; }; |
Und deine Implementationen sollten davon erben.
Dann kannst du die DLLs zur Laufzeit austauschen - bedenke jedoch, daß du dann für alle DLLs sowie den aufrufenden Code immer mit
demselben Compiler kompilieren mußt (denn C++ verfügt nicht über eine genormte
ABI).
P.S: Ich sehe gerade, daß du die Klasse direkt im Code instanziierst. Dies geht dann natürlich nicht mehr, d.h. am besten du definierst dir dann eine Factory-Methode, welche eine Instanz der jeweiligen Klasse (per new) erzeugt.
Ich bin mir nicht mehr sicher, aber es kann sein, daß du auch explizit den Destruktor deklarieren als auch definieren mußt (evtl. sogar direkt als erste Funktion der Klasse):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| class Base { virtual ~Base();
// ... };
inline Base::~Base() { } |
(ist schon ein paar Jahre her, als ich dies das letzte mal programmiert hatte)