Как я могу извлечь.tlb из.exe

У меня есть приложение COM, которое я хочу использовать, но у меня есть только.exe из этого приложения. Есть ли способ извлечь.tlb из этого.exe? Я пробовал с tlbexp filename.exe из командной строки Visual Studio, но я получаю сообщение об ошибке и не знаю почему: TlbExp : error TX0000 : Exception of type 'System.OutOfMemoryException' was thrown.Я использую Visual Studio 2012 с C++.

Редактировать:

.Exe находится в C++, позже я увидел, что tlbexp для.NET. Вот почему это не сработало, извините за путаницу. Мне все еще нужно найти способ извлечь.tlb из C++.exe.

3 ответа

то же самое можно сделать программно с помощью стандартного API управления файловыми ресурсами,LoadResourceи друзья, тогдаWriteFile.

(из комментария Романа Р. 14 янв. 2016 в 13:39)

Извлечь библиотеку типов можно только при условии, что EXE/DLL действительно имеет ресурс со своей библиотекой типов. Это не является данностью даже для COM-сервера.

Если предположить, что библиотека типов существует в файле, то саму Visual Studio можно использовать для извлечения библиотеки типов в виде файла TLB из EXE или DLL (или OCX).

Вот пример выполнения этого для общих элементов управления Microsoft с использованием Visual Studio 2022.

Сначала запустите Visual Studio. Затем откройте EXE или DLL, используя Open With:

Убедитесь, что выбран редактор ресурсов, и нажмите OK:

После открытия щелкните правой кнопкой мыши ресурс подTYPELIBnode и экспортируйте его в файл:

Сохраненный здесь двоичный файл находится в формате TLBформат. Открыть его можно, например, с помощью OLEView.


(Этот ответ навеян комментариями к вопросу, оставленным Романом Р. 14 января 2016 г., 13:34)

Я использовал эту утилиту https://www.nirsoft.net/utils/resources_extract.html Просто отметьте опцию библиотеки типов. Теперь он работает во всех случаях, но работает для многих dll и exe.

Другие вопросы по тегам