Зарегистрировать 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 
  • Использование DLL на основе Qt в приложении, отличном от Qt
  • C # эквивалент DllMain в C (WinAPI)
  • Ссылки DLL в Visual C ++
  • Объединение .net управляемых dlls
  • что означает __declspec (dllimport)?
  • Как сделать .lib-файл, когда есть .dll-файл и заголовочный файл
  • установка JDK8 на Windows XP - ошибка advapi32.dll
  • Установить пользовательский путь к ссылочным DLL?
  • Для чего используется <x> .dll?
  • Целевая 32-разрядная или 64-разрядная нативная DLL-память в зависимости от среды
  • Вызов функций в DLL из C ++
  • Давайте будем гением компьютера.