Enregistrer 32 bit COM DLL à 64 bit Windows 7
j'ai une DLL COM 32 bits et cette DLL est écrite en Delphi. C'est une DLL de Win32. Je veux utiliser cette 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'ai essayer de l'inscrire dans l'Invite de Commande en tant qu'Administrateur sous Windows 7 64 bits, mais j'ai cette erreur:
vérifiez si le module est compatible avec une version x86 (32 bits) ou x64 (64 bits) de regsvr32.EXE.
D'abord j'ai mis le fichier DLL vers le dossier windows / system32. Puis j'ouvre L'invite de commande en tant qu'administrateur. J'écris regsvr32 huginalpha.dll
et exécutez cette commande. Mais je reçois l'erreur. que puis-je faire?
10 réponses
le problème est probablement que vous essayez d'enregistrer une bibliothèque 32 bits avec une version 64 bits de regsvr32. voir cet article de KB - vous devez exécuter regsvr32 à partir de windows\SysWOW64 pour les bibliothèques 32 bits.
Pour la version 32 bits DLL dans Windows 64 bits plates-formes:
- Copier quoi que ce soit.dll
c:\windows\sysWOW64\
- ouvrez une invite CMD en tant qu'administrateur (très important)
dans la fenêtre CMD:
CD c:\windows\sysWOW64\
regsvr32 whatever.dll
vous exécuterez alors le regsvr 32 bits (c:\windows\sysWOW64\regsvr.exe
) sur une dll 32 bit
je crois que les choses ont changé maintenant. Sur Mon Win 2008 R2 Box, j'ai pu enregistrer une dll 32 bits avec une regsvr32 64 bits car la version 64 bits peut détecter le bitness cible et lancer une nouvelle regsvr32 32 bits à partir du dossier %SYSWOW%.
http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html
extraire l'usine de classe COM pour le composant avec CLSID {...} a échoué en raison de l'erreur suivante: classe 80040154 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. si IIS - piscine paramètres Avancés, Activez 32 bits : vrai ;)
pour enregistrer une communication .dll ou .ocx Windows 7 32 bits, procédez de la manière suivante:
Copier .dll ou .ocx c:\windows\system32
Tapez cmd dans Run menu, il va chercher cmd.exe, clic droit et clic Run as Administrator
il affichera un prompt à c:\windows\system32
Tapez
regsvr32 ocxname.ocx
pour l'enregistrer .ocx
ou
tapez regsvr32 dllname.dll
pour l'enregistrer .dll
mettre la dll dans le répertoire system32 ou syswow32, et utiliser regsvr32 approprié pour l'enregistrer. j'ai utilisé que même si elle a donné n'a pas réussi à enregistrer l'erreur, j'ai redémarré mon WIN 7 64 et mon application vb chargé la dll très bien!!
si le problème n'est pas résolu, lors de l'utilisation de la version SysWoW64 de regsvr32, assurez-vous que toutes les dépendances des bibliothèques ont la même architecture. Par exemple, si
regsvr32 lib_x86.dll
ne réussit pas à enregistrer la bibliothèque, et
%SystemRoot%\SysWow64\regsvr32 lib_x86
échoue aussi, essayez de charger lib_x86
to dépendances application Walker pour voir la liste complète des dépendances. Si un article a 64 bits d'architecture, voici la raison, pourquoi regsvr32
ne charge pas la bibliothèque 32 bits.
j'ai eu 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 qui a été construite pour XP (32 bits) dans Server 2008 R2 (x64) et aucune des résolutions Regsr32 n'a fonctionné pour moi. Cependant, enregistrer l'assemblage dans le .Net approprié a fonctionné parfaitement pour moi. C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
lien ci-Dessous sauvé la journée
https://msdn.microsoft.com/en-us/library/ms229076(SV.80).aspx
utilisez 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
essayez de l'exécuter à Cadrork64.
Exemple:
32 bits
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase
64 bits
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase