2010-07-30 6 views
0

J'écris un programme C# qui s'interface avec l'objet COM via COM interop.Enregistrer la référence COM à la machine Windows 7 64 bits

J'ai un programme tiers qui s'enregistre comme le serveur COM lorsque j'exécute l'application. Cela fonctionne très bien dans Windows Vista 32 bits et je peux très bien interfacer avec l'interopérabilité. (La référence s'affiche dans l'onglet "COM" de Visual Studio lorsque vous cliquez sur "Ajouter une référence")

Cependant, la référence n'apparaît pas dans l'onglet "COM" de mon ordinateur Windows 7 64 bits après l'exécution de la commande. application. Des pensées, pourquoi cela arriverait-il? J'ai effectivement essayé d'employer regsvr32.exe pour enregistrer l'application manuellement mais cela ne fonctionnait pas non plus (le message d'erreur disant "le DllRegisterServer d'entrée-point n'a pas été trouvé)

Répondre

1

Vous ne pourrez pas l'employer aussi longtemps qu'il L'utilitaire regsvr32.exe est pour les DLL, mais cela ressemble à un fichier EXE Si c'est une DLL, alors il doit être enregistré avec la version 32 bits de regsvr32.exe, l'un dans c:. \ windows \ syswow64 S'il est un fichier EXE alors la voie normale pour obtenir à s'inscrire est en l'exécutant avec l'option de ligne de commande/regserver

Mumble.exe/regServer

.

De plus, s'il s'agit d'une DLL ou d'un EXE pour lequel vous n'avez pas de proxy/stub 64 bits, vous devrez forcer votre application à s'exécuter en mode 32 bits. Projet + Propriétés, onglet Construire, Plate-forme cible = x86.

Si tout le reste échoue, vous avez réellement besoin de la part du fournisseur de ce programme pour le . Sûrement, ils auront une mise à jour disponible qui est vérifiée pour fonctionner correctement sur les systèmes d'exploitation 64 bits. S'ils ne sont plus là, l'exécuter dans une machine virtuelle est toujours une possibilité.

+0

Merci très Hans, ceci est très utile. Le fichier que j'essayais d'enregistrer est en fait .exe, pas étonnant que je ne pouvais pas le faire. J'ai déjà défini la plate-forme target = x86. Où est Mumble.exe? Comment l'obtenir? – mwong

+0

Je ne peux pas vous aider à trouver le fichier .exe, vous ne savez pas déjà? C'est le programme de 3ème partie que vous mentionnez dans votre OP. –

+0

Oh désolé, je vous ai probablement mal compris. Je pensais que vous avez mentionné un outil appelé Mumble.exe - il est probablement juste un exemple. Bien sûr, je saurais où se trouve ce programme de tierce partie. – mwong

1

Si elle est un dll géré alors vous pouvez essayer d'utiliser RegAsm

REGASM AssemblyName.dll /tlb:AssemblyName.tlb 
0

Vous pouvez trouver cela utile que je devais recompilé et construire 64 bits stub proxy pour le serveur COM de C++ moi-même et il a gardé à défaut lorsque vous essayez d'enregistrer le serveur en utilisant/regserver. Voici et thread de Miscrosoft qui m'a aidé à résoudre ce problème. Fondamentalement, vous devez utiliser à la place/RegServerPerUser, mais passez par le thread si vous entrez dans cette situation après les réponses d'en haut.

http://social.msdn.microsoft.com/Forums/en/vcprerelease/thread/11f01ceb-52a4-438f-b7ef-727ce7a3e191

Questions connexes