Einzelnen Beitrag anzeigen

fajac

Registriert seit: 1. Jul 2009
60 Beiträge
 
#1

COM-Automationsobjekte aus dynamisch geladener Dll

  Alt 7. Sep 2009, 14:42
Hallo COM-Experten!

folgendes Problem: Meine Applikation nutzt eine Bibliothek eines Drittherstellers (D.), realisiert als COM-Automationsobjekte in Dlls. Da dieser Hersteller relativ häufig neue Versionen herausbringt, habe ich die Zugriffe auf seine Bibliotheken in eigene Dlls gekapselt, die ihrerseits COM-Automationsobjekte exportieren. Auf diese Weise kann ich meine Applikation einfach durch Austausch meiner Wrapper-Dlls an neue Versionen der D.-Bibliothek anpassen. So weit so gut.

Beim letzten Update hat D. bei einem großen Versionssprung für alle Objekte neue GUIDs eingeführt. Da die Objekte und Methoden aber aufrufkompatibel geblieben sind, war das kein allzu großes Problem - Typelib neu importieren, Wrapper-Dlls neu kompilieren - fertig. Klappt auch soweit.

Allerdings hat sich jetzt eine neue Situation ergeben. Durch die neuen GUIDs ist es möglich, zwei Versionen der D.-Bibliotheken gleichzeitig zu installieren, wegen unterschiedlicher Features beider Versionen auch wünschenswert. Ich kann auch nach wie vor durch Neuregistrieren der Wrapper-Dlls auf eine bestimmte Version zugreifen - aber eben nicht auf beide gleichzeitig, da das Interface meiner Wrapper ja gleich geblieben ist und ich immer nur einen registrieren kann.

Jetzt die Frage : Ist es möglich, eine COM-Automations-dll dynamisch mit LoadLibrary zu laden und deren exportierte Objekte zu erzeugen? Das würde es mir ermöglichen, zwei Objekte mit gleichem Interface, aber unterschiedlicher Implementierung zu instanziieren. Habs bisher leider erfolglos probiert. Das Laden der Dlls ist kein Problem, aber wie komme ich an meine Objekte?
  Mit Zitat antworten Zitat