У меня есть DLL-библиотека COM, которая отлично работает как внутрипроцессный сервер, и я устанавливаю ее в приложениях COM + служб компонентов. Теперь, когда я пытаюсь создать его из своего клиентского приложения, я получаю HRESULT 0x8007007e «Указанный модуль не может быть найден». Что может быть причиной этого?
Почему не удается создать компонент COM + с кодом 0x8007007e. Указанный модуль не может быть найден?
Ответы (4)
Модуль не найден означает, что система COM попыталась загрузить модуль / dll (вероятно, на который указывает GUID), который не был найден, либо потому, что он не был зарегистрирован, либо потому, что dll отсутствовал по зарегистрированному пути.
Раньше я получал эту ошибку при попытке создать объект "A", например, из A.dll, который вызвал другую DLL (B.dll), которая не была зарегистрирована.
Инструмент, который может вас заинтересовать, - это монитор процесса, который сообщает вам какие именно ключи регистров искали для какого процесса, с кодами сбоя и успеха, и даже позволить вам увидеть его стек вызовов.
Пожалуйста, расскажите подробнее о различных обстоятельствах, когда вы работаете и не работаете.
Я подозреваю, что есть модуль, который зависит от того, что он не найден - например, некоторая dll, которой нет в пути поиска.
Трудно сказать . Я помню, что обычно мне нужно зарегистрировать компонент com с чем-то вроде этого:
Regsvr32 my_com.dll
Также вы можете убедиться, что путь к вашей DLL находится в переменной envornnemnt PATH (это PATH или другая переменная?). Или скопируйте его в папку для своего приложения.
Также проверьте права вашего пользователя на эту DLL.
DLL была зарегистрирована в динамическом представлении ClearCase, аналогичном подключенному диску, недоступному для COM +. Решением было переместить dll и dll прокси / заглушку на локальный диск и зарегистрировать их там.