Пользовательская DLL-библиотека VB6 (32 бита) зарегистрирована в 64-битной Windows 10, но не может инициировать объект ActiveX - PullRequest
1 голос
/ 23 февраля 2020

У меня есть 32-битная VB6 Custom DLL, которую я использовал до Excel 2013, Win-7. Теперь после перехода в Excel 2016 на Win-10 файл Excel становится недоступным для использования. Я сделал регистрацию этого старого файла DLL на Win-10 через PowerShell (режим администратора), и он говорит, что регистрация прошла успешно. Однако, когда модуль в Excel выполняет создание объекта через CreateObject, он говорит, что ActiveX не может создать объект. Еще один сюрприз: когда я пытаюсь сослаться на библиотеку VB6 DLL из (в Excel) Tools -> Reference, я могу сослаться на нее и получить доступ к классу / функциям, но все же, когда я пытаюсь выполнить его, он говорит ту же ошибку об ActiveX .

что еще мне нужно сделать в Windows -10, чтобы запустить его?

1 Ответ

0 голосов
/ 24 февраля 2020

32-битные программы могут загружать только 32-битные библиотеки. 64-битные программы могут загружать только 64-битные библиотеки. Это важно. В COM, который делают VB6 и Excel, вы можете создать несовместимую разрядность, принудительно введя неправильную разрядность dll в dllhost. Все звонки выполняются с помощью серверов EXE. См. https://docs.microsoft.com/en-us/windows/win32/com/registering-the-dll-server-for-surrogate-activation (обратите внимание, что поиск саботажей в поисках очков Windows).

...