Как я могу извлечь.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:
После открытия щелкните правой кнопкой мыши ресурс подTYPELIB
node и экспортируйте его в файл:
Сохраненный здесь двоичный файл находится в формате
TLB
формат. Открыть его можно, например, с помощью OLEView.
(Этот ответ навеян комментариями к вопросу, оставленным Романом Р. 14 января 2016 г., 13:34)
Я использовал эту утилиту https://www.nirsoft.net/utils/resources_extract.html Просто отметьте опцию библиотеки типов. Теперь он работает во всех случаях, но работает для многих dll и exe.