2011-08-03 7 views
1

J'ai créé une DLL COM en C# .net et en appelant une méthode de COM dll à partir du code VCPP.Utilisation de COM dll dans VC++ dll

La création de COM DLL entraîne également une création de fichier tlb, après avoir lu à ce sujet trouvé que j'ai besoin d'enregistrer le fichier tlb en utilisant regasm pour faire une entrée de registre de celui-ci. Maintenant, si j'exécute l'application sur un ordinateur sur lequel Microsoft Visual Studio n'est pas installé, je ne pourrai pas enregistrer le fichier tlb en utilisant regasm, même si je tente d'enregistrer le fichier tlb en utilisant regsvr32, ce qui donne une erreur message.

Y a-t-il une solution pour cela?

Répondre

0

Vous n'avez pas besoin d'enregistrer le fichier .tlb - vous devez utiliser regasm avec le paramètre /codebase pour enregistrer le fichier COM .dll. Vous devez exécuter regasm sur chaque ordinateur sur lequel vous souhaitez utiliser votre COM .dll via COM. regasm est livré et installé avec .NET framework, donc s'il n'est pas disponible, cela signifie que vous ne pouvez pas utiliser votre DLL COM, car celle-ci nécessite de toute façon l'exécution .NET.

Voir aussi this question.

+0

J'ai fait le développement sur une machine de développement et maintenant je voudrais le tester sur Windows Server 2008 sans studio visuel installé et a pris tous les binaires (dll dépendant (s), COM dll et tlb fichier et aussi le .exe fichier écrit dans VCPP pour appeler la méthode COM), pourriez-vous s'il vous plaît dites-moi comment dois-je procéder pour tester l'exe –

+0

Vous aurez besoin de la red & rcommutable VC++ et de .NET framework sur cette machine. Vous devrez copier le fichier .dll et le fichier .exe, enregistrer le .dll avec regasm et lancer le fichier .exe. – sharptooth

+0

Merci pour votre aide !! Je suis en mesure d'enregistrer la DLL COM en utilisant Regasm.exe, mais quand j'essaye d'enregistrer la même COM dll sur machine 64 bits, je reçois l'exception suivante RegAsm: erreur RA0000: Impossible de charger 'C : \ Binaries \ GCOM.dll 'est car il ne s'agit pas d'un assembly .NET valide. J'ai utilisé le cmd ci-dessous o inscrire le dll G: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe GCOM.dll /tlb:GCOM.tlb/codebase –