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?
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.
Pour les DLL 32 bits sur les plates-formes Windows 64 bits:
c:\windows\sysWOW64\
Dans la fenêtre CMD:
CD c:\windows\sysWOW64\
regsvr32 whatever.dll
Vous allez ensuite exécuter le regsvr 32 bits (c:\windows\sysWOW64\regsvr.exe
) sur une dll 32 bits
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
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;)
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
mettez la dll dans le répertoire system32 ou syswow32, et utilisez regsvr32 pour l'enregistrer.
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
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.
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