Зарегистрируйте 32-битную COM DLL в 64-битной Windows 7 - PullRequest
30 голосов
/ 09 августа 2010

У меня есть 32-битная DLL компонента COM, и эта DLL написана на Delphi.Это Win32 DLL.Я хочу использовать эту DLL в своем проекте Visual C # на платформе .NET.

Я не могу добавить ссылку на эту DLL в проект.Я пытаюсь зарегистрировать его в командной строке в качестве администратора в Windows 7 64-битной, но я получаю эту ошибку:

Проверьте, совместим ли модуль с x86 (32-бит) или x64 (64-бит) версия regsvr32.exe.

Сначала я помещаю файл DLL в папку windows / system32.Затем я открываю командную строку от имени администратора.Я пишу regsvr32 huginalpha.dll и выполняю эту команду.Но я получаю ошибку.что я могу сделать?

Ответы [ 10 ]

52 голосов
/ 09 августа 2010

Проблема, вероятно, заключается в том, что вы пытаетесь зарегистрировать 32-битную библиотеку в 64-битной версии regsvr32. См. Эту статью базы знаний - вам нужно запустить regsvr32 из windows \ SysWOW64 для 32-битных библиотек.

29 голосов
/ 28 ноября 2012

Для 32-битных DLLS в 64-битных платформах Windows:

  1. Скопируйте what.dll в c:\windows\sysWOW64\
  2. Открыть приглашение CMD КАК АДМИНИСТРАТОР (очень важно)

В окне CMD:

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

Затем вы будете выполнять 32-битный regsvr (c:\windows\sysWOW64\regsvr.exe) на 32-битной DLL

4 голосов
/ 22 сентября 2013

Полагаю, сейчас все изменилось. На моем Win 2008 R2 Box я смог зарегистрировать 32-битную dll с 64-битным regsvr32, так как 64-битная версия может определять целевой битрент и порождать новый 32-битный regsvr32 из папки% SYSWOW%.

См .: Регистрация 32-битной DLL с 64-битной regsvr32

2 голосов
/ 12 января 2017

Чтобы зарегистрировать comm .dll или .ocx в 32-битной Windows 7, выполните следующие действия:

Скопируйте .dll или .ocx в c:\windows\system32 Введите cmd в меню «Выполнить», будет выполнен поиск cmd.exe, щелкните правой кнопкой мыши и нажмите Run as Administrator

Будет отображено приглашение на c:\windows\system32

Введите

regsvr32 ocxname.ocx для регистрации .ocx

или

введите regsvr32 dllname.dll для регистрации .dll

2 голосов
/ 06 апреля 2013

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

Получение фабрики классов COM для компонента с CLSID {...} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

если вы попробуете это;

c: \ windows \ system32 \ regsvr32.exe <имя файла> .dll

вы все еще можете воспользоваться этим исключением. поэтому IIS-пул Расширенные настройки, Включить 32-битное приложение: true;)

0 голосов
/ 05 февраля 2015

Под ссылкой сохранил день

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

0 голосов
/ 15 апреля 2014

Я получаю сообщение об ошибке «Модуль может быть совместим с этой версией Windows» для обеих версий RegSvr32 (32-битной и 64-битной).Я пытался зарегистрировать DLL, созданную для XP (32-разрядная версия) в Server 2008 R2 (x64), и ни одно из разрешений Regsr32 не помогло мне.Однако регистрация сборки в соответствующем .Net работала отлично для меня.C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe

0 голосов
/ 21 февраля 2013

Попробуйте запустить его на 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
    
0 голосов
/ 27 апреля 2012

Если проблема не решена, при использовании SysWoW64 версии regsvr32 убедитесь, что все зависимости библиотеки имеют одинаковую архитектуру. Например, когда

regsvr32 lib_x86.dll не удается зарегистрировать библиотеку, и %SystemRoot%\SysWow64\regsvr32 lib_x86 также не удается, попробуйте загрузить lib_x86 в приложение Dependency Walker, чтобы увидеть весь список зависимостей. Если какой-либо элемент имеет 64-битную архитектуру, вот причина, по которой regsvr32 не может загрузить 32-битную библиотеку.

0 голосов
/ 17 марта 2011

поместите dll в каталог system32 или syswow32 и используйте соответствующий regsvr32 для его регистрации.wiered, что, хотя он дал не удалось зарегистрировать ошибку, я перезагрузил свой WIN 7 64 и мое приложение VB загрузил DLL просто отлично!

...