У меня есть C ++ DLL, которую я написал, которая не может зарегистрироваться на 64-битной машине. Обратите внимание на 32-битную версию DLL-регистров на 32-битной машине.
Мы собираем DLL на 64-битном компьютере под управлением Windows 7, используя Visual Studio 2010 в режиме выпуска и нацеливаемся на платформу x64. Я хочу установить DLL на 64-битный компьютер с Windows 10 (место назначения). На целевом компьютере установлен перенаправитель VS 2010 для 64-разрядной версии. Когда я пытаюсь зарегистрировать программу, используя:
C: \ WINDOWS \ system32 \ regsvr32.exe
Выдает ошибку и говорит, что программа «может быть несовместима с этой версией Windows, которую вы используете. Проверьте, совместим ли модуль с x86 (32-разрядной) или x64 (64-разрядной) версией regsvr32.exe» ,
Я использую программу под названием Зависимости, которая пытается выяснить, какие зависимости требуются DLL. Зависимости говорят, что моя DLL требует ATL100.dll. Тем не менее, он устанавливается Redist VS 2010 и действительно находится в C: \ windows \ system32. Сама DLL не зависит от каких-либо сторонних программ.
У кого-нибудь есть идеи, что искать дальше, чтобы зарегистрировать этот файл?
Я понял. Мне пришлось удалить 64-разрядную и 32-разрядную версию Redist VS 2010. Удалите ATL100.dll из каталогов C: \ windows \ system32 и syswow64 и перезагрузите компьютер. После перезагрузки я переустановил оба установщика перенаправления. Тогда я смог зарегистрировать файл из командной строки администратора.
Может быть, что-то, что мы установили, установило файл ATL100.dll, и когда я установил 64-битный редист, он не переписал ATL100.dll. Устаревшая версия установлена.
Других решений пока нет …