Зарегистрировать 32-битную COM-DLL до 64 бит Windows 7

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

  1. Скопируйте c:\windows\sysWOW64\ whatever.dll в c:\windows\sysWOW64\
  2. Откройте приглашение CMD AS ADMINISTRATOR (очень важно)

В окне CMD:

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

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

Я верю, теперь все изменилось. В моем Win 2008 R2 Box я смог зарегистрировать 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-classа для компонента с CLSID {…} завершилось ошибкой из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

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

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

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

Чтобы зарегистрировать 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

поместите 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-битную библиотеку.

Я получаю сообщение об ошибке «Модуль может быть совместим с этой версией Windows» для обеих версий 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 
  • Разрешение LNK4098: defaultlib 'MSVCRT' конфликтует с
  • C ++ / CLI-shell для C ++ для использования в качестве ссылки в C #
  • Есть ли способ найти все функции, открытые dll
  • Поиск DLL в windowsх
  • Управление зависимостями DLL с Maven
  • Как скопировать DLL-файлы в ту же папку, что и исполняемый файл, используя CMake?
  • Когда использовать динамические и статические библиотеки
  • Как изменить временную метку в dll или exe?
  • Как я могу исправить ошибки «DllRegisterServer entry point not found» в Windows 7?
  • Создание файлов манифеста для бесплатного COM-входа
  • Ошибка ASP 0177: 8007007e Ошибка сервера.CreateObject для COM-библиотеки DLL
  • Давайте будем гением компьютера.