2009-08-10 8 views
0

Ich habe eine Type Library aus einer .NET DLL erstellt, die ich erstellt habe. Ich habe es dann in Delphi importiert und eine Methode innerhalb der Schnittstelle des COM-Objekts aufgerufen. Wenn es versucht, das COM-Objekt zu erstellen, erhalte ich den Fehler, dass die Klasse nicht registriert ist. Die DLL ist bei der GAC registriert, also sollte das nicht sein. Weiß jemand, was sonst noch dazu führen könnte?EOleSysError mit Nachricht 'Klasse nicht registriert'

Antwort

1

Sie müssen die .NET-Assembly für COM verfügbar machen - verwenden Sie regasm.exe mit dem/codebase-Schlüssel.

+0

Mine wird COM ausgesetzt, indem die COM visible -Eigenschaft verwendet und eine Typenbibliothek mithilfe von/tlb erstellt wird. Soweit ich mich erinnere, ist/codebase, wenn Sie den Pfad der Assembly angeben möchten. Aber ich habe es in den GAC geschrieben, also sollte ich das nicht tun müssen. Wenn ich mich nicht irre? –

+0

ComVisible ermöglicht die Verwendung der Klasse über COM. Aber solange Sie es nicht mit regasm verfügbar gemacht haben, sodass die Klassen-IDs zur Registrierung hinzugefügt werden, kann der Konsument den Standort der Assembly nicht erkennen. Du verwirrst drei wirklich unterschiedliche Dinge. ComVisible macht aus COM eine Unentbehrlichkeit zugänglich. Die Typbibliothek dient als ein Mechanismus für die Verbraucher, um zu ermitteln, welche Entitäten die Assembly verfügbar machen kann. Und das Aussetzen der Registrierung mit regasm ermöglicht es einem Benutzer, die Assembly zu finden, die die gewünschte Klasse implementiert. – sharptooth

Verwandte Themen