Ответ 1
Вероятно, вы пытаетесь зарегистрировать 32-битную библиотеку с 64-разрядной версией regsvr32. См. статью в KB - вам нужно запустить regsvr32 из Windows\SysWOW64 для 32-битных библиотек.
У меня есть 32-битная COM-компонента DLL, и эта DLL написана в Delphi. Это Win32 DLL. Я хочу использовать эту DLL в проекте Visual С# на платформе .NET.
Я не могу добавить ссылку на эту DLL в проекте. Я пытаюсь зарегистрировать его в командной строке как администратор в Windows 7 64 бит, но я получаю эту ошибку:
Проверьте, совместим ли модуль с x86 (32-разрядной) или x64 (64-разрядной) версией regsvr32.exe.
Сначала я поместил DLL файл в папку windows/system32. Затем я открываю командную строку как администратор. Я пишу regsvr32 huginalpha.dll
и выполняю эту команду. Но я получаю ошибку. что я могу сделать?
Вероятно, вы пытаетесь зарегистрировать 32-битную библиотеку с 64-разрядной версией regsvr32. См. статью в KB - вам нужно запустить regsvr32 из Windows\SysWOW64 для 32-битных библиотек.
Для 32-разрядных DLLS в 64-разрядных платформах Windows:
c:\windows\sysWOW64\
В окне CMD:
CD c:\windows\sysWOW64\
regsvr32 whatever.dll
Затем вы будете выполнять 32-битный regsvr (c:\windows\sysWOW64\regsvr.exe
) в 32-битной dll
Я верю, теперь все изменилось. В ящике Win 2008 R2 я смог зарегистрировать 32-битную dll с 64-битным regsvr32, поскольку 64-битная версия может определить целевую битту и создать новую 32-разрядную regsvr32 из% SYSWOW% папки.
Обратитесь: Регистрация 32-разрядной библиотеки DLL с 64-битным regsvr32
http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html
Извлечение COM-класса factory для компонента с CLSID {...} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
если вы попробуете это;
c:\windows\system32\regsvr32.exe <filename> .dll
вы все равно можете воспользоваться этим исключением. поэтому расширенные настройки IIS-пула, Включить 32-битное приложение: true;)
Чтобы зарегистрировать comm.dll или .ocx в 32-разрядной версии Windows 7, выполните следующие действия:
Скопировать .dll или .ocx в c:\windows\system32
Введите cmd в меню Run, он будет искать cmd.exe, щелкните правой кнопкой мыши и выберите Run as Administrator
На экране появится сообщение c:\windows\system32
Введите
regsvr32 ocxname.ocx
для регистрации .ocx
или
введите regsvr32 dllname.dll
для регистрации .dll
поместите dll в каталог system32 или syswow32 и используйте соответствующий regsvr32 для его регистрации. что даже если он выдал ошибку регистрации, я перезагрузил свой WIN 7 64, и мое приложение vb загрузило dll просто отлично!
Если проблема не решена, при использовании версии regsvr32 SysWoW64 убедитесь, что все зависимости библиотеки имеют одинаковые архетинты. Например, когда
regsvr32 lib_x86.dll
не удается зарегистрировать библиотеку и %SystemRoot%\SysWow64\regsvr32 lib_x86
также не работает, попробуйте загрузить lib_x86
в приложение Dependency Walker, чтобы просмотреть весь список зависимостей. Если у какого-либо элемента есть 64-разрядная археометрия, вот почему, почему regsvr32
не загружает 32-разрядную библиотеку.
Я получал сообщение об ошибке "Модуль может совместим с этой версией окон" для обеих версий RegSvr32 (32-разрядная и 64-разрядная версии). Я пытался зарегистрировать DLL, созданную для XP (32 бит) в Server 2008 R2 (x64), и ни одна из резолюций Regsr32 не работала для меня. Однако регистрация сборки в соответствующей .Net работала идеально для меня. C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
Ниже ссылки сохранен день
https://msdn.microsoft.com/en-us/library/ms229076(VS.80).aspx
используйте соответствующие RegSvcs, как указано в приведенной выше ссылке
C:\Windows\Microsoft. NET\Framework\v4.0.30319\RegSvcs.exe....\Shared\Your.dll/tlb:Your.tlb
Попробуйте запустить его в Framework64.
Пример:
32 бит
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase
64 бит
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase