web-dev-qa-db-fra.com

Enregistrer COM 32 bits DLL à Windows 7 64 bits

J'ai un composant COM 32 bits DLL et ce DLL est écrit en Delphi . C'est un DLL Win32 . Je souhaite utiliser ce DLL dans mon projet Visual C # sur la plate-forme .NET.

Je ne peux pas ajouter de référence à cette DLL dans le projet . J'essaie de l'enregistrer dans une invite de commande en tant qu'administrateur dans Windows 7 64 bits, mais le message d'erreur suivant s'affiche:

Vérifiez si le module est compatible avec une version x86 (32 bits) ou x64 (64 bits) de regsvr32.exe.

J'ai d'abord mis le fichier DLL dans le dossier windows/system32. J'ouvre ensuite l'invite de commande en tant qu'administrateur. J'écris regsvr32 huginalpha.dll et exécute cette commande. Mais j'ai l'erreur. Que puis-je faire?

30
Murat

Le problème est probablement que vous essayez d’enregistrer une bibliothèque 32 bits avec la version 64 bits de regsvr32. Consultez cet article de la base de connaissances - vous devez exécuter regsvr32 à partir de Windows\SysWOW64 pour les bibliothèques 32 bits.

52
sharptooth

Pour les DLL 32 bits sur les plates-formes Windows 64 bits:

  1. Copiez le fichier any.dll dans c:\windows\sysWOW64\
  2. Ouvrez une invite CMD en tant qu’administrateur (très important)

Dans la fenêtre CMD:

  1. CD c:\windows\sysWOW64\
  2. regsvr32 whatever.dll

Vous allez ensuite exécuter le regsvr 32 bits (c:\windows\sysWOW64\regsvr.exe) sur une dll 32 bits

29
RichC

Je crois que les choses ont changé maintenant. Sur ma Win 2008 R2 Box, j'ai pu enregistrer une DLL 32 bits avec un regsvr32 64 bits, car la version 64 bits peut détecter le bit cible et générer un nouveau fichier regsvr32 32 bits à partir du dossier% SYSWOW%.

Référez-vous: Enregistrement d’un DLL 32 bits avec regsvr32 64 bits

4
Abhijit

http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html

La récupération de la fabrique de classes COM pour le composant avec CLSID {...} a échoué en raison de l'erreur suivante: 80040154 Classe non enregistrée (exception de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

si vous essayez ceci;

c:\windows\system32\regsvr32.exe <nom du fichier> .dll

vous pouvez toujours prendre cette exception. alors paramètres avancés IIS-pool, Activer l'application 32 bits: true;)

2
onerkaya

Pour inscrire un fichier .dll ou .ocx sur Windows 7 32 bits, procédez comme suit:

Copiez .dll ou .ocx dans c:\windows\system32 Tapez cmd dans le menu Exécuter. Le fichier sera recherché dans cmd.exe, cliquez avec le bouton droit de la souris et cliquez sur Run as Administrator.

Il affichera une invite à c:\windows\system32

Type 

regsvr32 ocxname.ocx pour enregistrer .ocx

ou

tapez regsvr32 dllname.dll pour enregistrer le fichier .dll

2
raju chowrsiya

mettez la dll dans le répertoire system32 ou syswow32, et utilisez regsvr32 pour l'enregistrer.

0
anonymous

Je recevais l'erreur "Le module peut être compatible avec cette version de Windows" pour les deux versions de RegSvr32 (32 bits et 64 bits). J'essayais d'enregistrer une DLL créée pour XP (32 bits) dans Server 2008 R2 (x64) et aucune des résolutions Regsr32 ne fonctionnait pour moi. Cependant, l'enregistrement de l'Assemblée dans le .Net approprié a parfaitement fonctionné pour moi . C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe 

0
Dave Heffernan

Si le problème n'est pas résolu, lorsque vous utilisez la version SysWoW64 de regsvr32, assurez-vous que toutes les dépendances de bibliothèque ont la même architecture. Par exemple, quand

regsvr32 lib_x86.dll ne parvient pas à enregistrer la bibliothèque et %SystemRoot%\SysWow64\regsvr32 lib_x86 échoue également. Essayez de charger lib_x86 dans l'application Dependency Walker pour afficher la liste complète des dépendances. Si un élément possède une architecture 64 bits, voici la raison pour laquelle regsvr32 ne parvient pas à charger la bibliothèque 32 bits.

0
Alexus

Lien ci-dessous a sauvé la journée

https://msdn.Microsoft.com/en-us/library/ms229076(VS.80).aspx

utiliser les RegSvcs appropriés comme spécifié dans le lien ci-dessus

c:\Windows\Microsoft. NET\Framework\v4.0.30319\RegSvcs.exe ....\Shared\Your.dll /tlb:Votre.tlb 

0
Mathulan