Laden...

Klassen, Methoden aus COM-DLL in C# aufrufen/verwenden

Erstellt von oehrle vor 12 Jahren Letzter Beitrag vor 12 Jahren 941 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Klassen, Methoden aus COM-DLL in C# aufrufen/verwenden

Hallo, ich tu mir schwer mit dem verwenden von Methoden und Klasen aus eine COM-DLL die in C++ geschrieben wurde (was ja eigentlich egal sein soll).

Ich habe ein lauffähiges Programm, bei dem alles shon soweit gepasst hatte. Jetzt hat die Entwicklerfirma die DLL erweitert oder verändert.

Ich habe sogenannte Interfaces eingebunden, und denen die GUID zugewiesen.
Danach habe ich Daten verarbeitet, und aus einem Objekt aus der COM-DLL eine Instanz erzeugt und Daten eingepflegt, verarbeitet. Jetzt, mit der neuen Version krachts beim erstellen der Instanz. es wird bemängelt, das dieses Objekt nicht registriert ist, siehe Fehlermeldung cer ComException:

Fehlermeldung:
Retrieving the COM class factory for component with CLSID {96463B84-E773-49B4-8EB9-5C5AC4A39FE7} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Ich habe aber aus der COM-DLL mit tlbImp.exe eine Interop-DLL erstellt, und diese unter Projekt/Verweise eingebunden. Somit muss man ja diese nicht mehr registrieren mit regsrv32 <DLL-Datei>.

Ich habe mir die interop-DLL dann mal im NetReflector angesehen. Das ist diese Instanz die ich erstelle als Schnittstelle bekannt, auch mit der GUID versehen.

Wie gesagt, ich bin auf diesem Gebit total neu, so etwas einzubinden. Mit den bisherigen Mitteln hats gekklappt.

Muss ich diese SChnittstelleninstanz noch irgendwie mit der GUID-Nummer in meienm Programm verkuppeln, aber wie mache ich das?

F
10.010 Beiträge seit 2004
vor 12 Jahren

Ich habe aber aus der COM-DLL mit tlbImp.exe eine Interop-DLL erstellt, und diese unter Projekt/Verweise eingebunden. Somit muss man ja diese nicht mehr registrieren mit regsrv32 <DLL-Datei>.

Dann hast Du aber COM komplett falsch verstanden.

COM muss immer registriert werden und in den Interop Dateien sind nur die Aufrufe der Registrierten Funktionen enthalten.