2010-06-28 8 views
0

J'essaie d'utiliser une API à laquelle mon client a une licence. J'ai reçu une DLL COM Interop.Utilisation de la DLL COM Interop de quelqu'un d'autre

Je peux écrire tout le code j'ai besoin, mais quand je vais courir, je reçois l'erreur suivante:

Retrieving the COM class factory for component with CLSID {73C527F2-C6C0-4F4B-92F7-1448EC342FC5} failed due to the following error: 80040154. 

Toutes les idées? Y a-t-il quelque chose que je dois enregistrer?

Merci, Jack

+1

Est-ce une application 64 bits? Vous ne pouvez pas utiliser COM à partir de 64 bits. Aussi, je suppose qu'il est correctement enregistré? –

+0

Je ne savais pas cela sur 64 bits. Je cours un système x64. J'ai défini la cible de plate-forme d'application sur x86, mais la même erreur. En l'enregistrant, voulez-vous dire utiliser regasm.exe? J'ai fait cela (en n'utilisant aucune option sur la commande). Cependant, je ne vois pas le ClassId dans mon registre. – jchapa

Répondre

2

Avez-vous les objets/logiciels COM installés sur la machine de développement, ou avez-vous simplement copié l'assemblage interop? Si c'est le dernier, l'assembly interop va avoir toutes les interfaces et les profils d'objets qui feront fonctionner intellisense dans Visual Studio, mais il ne contient pas de code exécutable réel.

+0

Ah, donc ça ne marchera pas à moins que l'application actuelle ne tourne sur le système? – jchapa

+0

Oui, l'assembly interop indique à .net runtime les éléments d'information nécessaires, tels que les ID de classe et les profils de fonction, mais vous devez installer les objets COM réels pour pouvoir exécuter du code. –

+0

Je suppose que la plupart des sociétés d'hébergement ne vous laisseront pas les installer. :-) Merci pour l'aide. – jchapa

2

Erreur 0x80040154 signifie "Classe non enregistrée". Vous devez enregistrer l'objet COM. Vous pouvez utiliser l'outil Regsvr32.