Ошибка IClassFactory из-за следующей ошибки: 800a0153
Я пытаюсь сослаться на компонент com, и он выдает ошибку ниже.
Не удалось создать экземпляр компонента COM с CLSID {xxx} из IClassFactory из-за следующей ошибки: 800a0153.
В частности, ошибка возникает, когда я пытаюсь создать экземпляр объекта. Я проверил это
- Проект строится для процессоров x86, которыми он является
- Объект com зарегистрирован с помощью regsvr32 и доступен в реестре.
Я также могу увидеть методы в браузере объектов, так что я знаю.net находит его.
Есть идеи о том, что мне не хватает?
3 ответа
Это код ошибки, специфичный для компонента. Если у вас нет документации, объясняющей, что может означать код, вам понадобится поддержка поставщика.
Как отмечено в моем комментарии к ответу Ханса, этот код ошибки - FACILITY_CONTROL, который должен относиться к элементам управления OLE/ActiveX и имеет код ошибки, который находится в стандартном диапазоне (то есть для использования Microsoft), определенном в OleCtl.h, но не задокументировано в заголовочных файлах Win32, поэтому, вероятно, является внутренним для продукта Microsoft, такого как Visual Basic.
Можете ли вы рассказать нам что-нибудь еще о COM-компоненте, который вы пытаетесь использовать?
Если COM-компонент был написан с использованием Visual Basic, я думаю, что то, что вы видите, эквивалентно ошибке времени выполнения 339, которую пользователи Visual Basic видят, пытаются ли они ссылаться на элемент управления OCX, в котором отсутствуют некоторые его зависимости. Вы можете посмотреть на зависимости DLL/EXE COM-сервера, используя Depends.exe
и посмотрите, есть ли они у вас на компьютере.
Когда мне приходилось много работать с COM, я довольно часто использовал COM Explorer от этих парней:
http://download.cnet.com/COM-Explorer/3000-2206_4-10022464.html?tag=mncol;lst
Мне пришлось установить его в прошлом году, чтобы отладить причудливую проблему с регистрацией COM с помощью плагинов Office.
Кроме того, я не имею никакого отношения к этим парням (и похоже, что компания может быть тостом в любом случае).