2009-08-10 17 views
0

J'ai créé une bibliothèque de types à partir d'une DLL .NET que j'ai créée. Je l'ai ensuite importé dans Delphi et j'ai appelé une méthode dans l'interface de l'objet COM. Quand il essaie de créer l'objet COM, j'obtiens l'erreur que la classe n'est pas enregistrée. La DLL est enregistrée avec le GAC, donc ce ne devrait pas être cela. Quelqu'un sait quoi d'autre pourrait causer cela?EOleSysError avec le message 'Classe non enregistrée'

Répondre

1

Vous devez exposer l'assembly .NET à COM - utilisez regasm.exe avec la clé/codebase.

+0

Mine est exposée à COM en utilisant la propriété COM visible et en créant une bibliothèque de types à l'aide de/tlb. De ce que je me souviens/codebase est quand vous voulez spécifier le chemin de l'assemblée. Mais je l'ai mis dans le GAC, donc je ne devrais pas avoir besoin de faire ça. Sauf si je me trompe? –

+0

ComVisible permet d'utiliser la classe via COM. Mais à moins que vous ne l'ayez exposé avec regasm pour que les identifiants de classe soient ajoutés au registre, le consommateur sera incapable de détecter l'emplacement de l'assembly. Vous confondez trois choses vraiment différentes. ComVisible rend un service accessible depuis COM. La bibliothèque de types sert de mécanisme permettant aux consommateurs de découvrir les entités que l'assembly peut exposer. Et exposer au registre avec regasm permet à un consommateur de trouver réellement l'assembly qui implémente la classe qu'il veut. – sharptooth

Questions connexes