Почему я не могу просмотреть dll, чтобы выяснить, что в нем?: "Некоторые компоненты не могут быть просмотрены"
Я ищу недостающий интерфейс COM X
который я подозреваю, определяется в Y.dll
, Я могу взглянуть на этот предполагаемый интерфейс, используя
grep X Y.dll
который говорит "спички". Ура, подозрение подтвердилось!
Увы, когда я использую Object Browser в Visual Studio Express, пытаюсь добавить Y.dll
к моему набору пользовательских компонентов я получаю сообщение об ошибке: "Некоторые компоненты не могут быть просмотрены" во всплывающем окне.
Так по каким причинам я не могу просмотреть эту DLL? Могут ли COM-интерфейсы преднамеренно или случайно быть защищены, скрыты, защищены или скрыты? Очевидно, мне нужен учебник для начинающих!
Официально все, что Microsoft знает об этом, похоже, вообще лишены понимания:
Эта ошибка обычно возникает при попытке добавить тип файла, который не поддерживает просмотр объектов, например, файлы.htm и.txt, в диалоговом окне "Выбор компонентов". Обозреватель объектов поддерживает типы файлов, такие как.bsc,.olb,.tlb,.dll,.exe и.ocx.
Серьезно, каковы причины, по которым dll или exe не поддерживают просмотр объектов? Любой указатель на учебники или книги будет оценен этим новичком! Благодарю.
1 ответ
Браузеры COM-объектов используют метаданные (библиотеки типов), экспортируемые COM-серверами (dll, exe, ocx и т. Д.).
Проблема в том, что COM-серверы не обязаны экспортировать какие-либо метаданные о том, какие интерфейсы он реализует. К сожалению, я нашел довольно много таких серверов (поэтому нужно знать, какие CoClasses, Interfaces и т. Д. Поддерживаются другими способами).
Проверьте, содержит ли ваш COM-сервер (y.dll) ресурс "TYPELIB", подобный следующему:
Надеюсь это поможет.