Не могу зарегистрировать DLL

Я работаю над проектом ATL. Когда я строю свое решение в системе x64, оно не работает на архитектуре x86 и наоборот. (Я не могу зарегистрировать DLL, сгенерированный в другой архитектуре). Где может быть проблема? любая помощь будет оценена.

1

Решение

Упомянутые вами симптомы вряд ли будут точно такими, как описано. Неважно, если вы встраиваете Win32 или же x64важно то, какая целевая платформа выбрана при сборке. Затем,

Я не могу зарегистрировать DLL, сгенерированный в другой архитектуре

В 32-битной Windows нет возможности использовать x64 DLL, это поведение по дизайну. Однако в 64-битных системах у вас обычно есть как 32-, так и 64-битные «среды», и вы можете использовать и зарегистрировать Win32 DLL там есть. Если вы не можете, типичная причина в том, что отсутствует обязательная зависимость (CRT или другая DLL, Зависимость Уокер может быть полезным) Вы должны проверить это, потому что Q не имеет соответствующей информации по этому вопросу.

Другая возможная проблема может быть связана с «использованием» DLL, помимо ее регистрации. Если вы «используете» DLL из вашей, например, сборки приложения .NET для AnyCPU платформы, и приложение работает как 64-битный процесс в 64-битной Windows, тогда оно не будет выбирать и использовать вашу 32-битную DLL.

2

Другие решения

[D: \ команды]
> введите regsvr_32bit.bat
@ эхо выключено
rem "% SystemRoot% \ Syswow64 \ regsvr32.exe"% s *
начать "", regsvr_32bit.exe.lnk "% ~ f1"
[D: \ команды]
> _

Файл .lnk — это обычный ярлык Windows.

Вместо этого вы можете использовать путь, указанный в комментарии.


Обратите внимание, что 64-разрядные исполняемые файлы находятся в каталоге [system32], а 32-разрядные исполняемые файлы находятся в каталоге [SysWOW64]. Хотя это может быть довольно запутанным для тех, кто думает, это мера совместимости, которая Just Works ™ для тех, кто не думает. Так как я склонен думать, я долго боролся с этим …

Вот результат для regsvr32 (как пример):

[C: \ Program Files (x86) \ Microsoft Visual Studio 11.0]
> свалка / заголовки "% SystemRoot% \ Syswow64 \ regsvr32.exe" | найти "машину"
14C машина (x86)
32-битный словарь

[C: \ Program Files (x86) \ Microsoft Visual Studio 11.0]
> свалка / заголовки "% SystemRoot% \ system32 \ regsvr32.exe" | найти "машину"
8664 машина (x64)

[C: \ Program Files (x86) \ Microsoft Visual Studio 11.0]
> _
1

По вопросам рекламы [email protected]