Использование tlbexp.exe на COM DLL

Я пытаюсь установить связь между Centura и COM .dll. (Скачано с http://download.resip.fr/ для импорта базы данных)

Centura требует файл.tlb для связи с этим компонентом. Обычно я бы использовал regasm /tlb создать.tlb, но, видя, что это COM.dll, это невозможно.

Я обнаружил, что могу использовать tlbexp для.NET DLL: http://msdn.microsoft.com/en-us/library/hfzzah2c(v=vs.80).aspx

Я попробовал это, зная, что это, вероятно, потерпит неудачу (поскольку у меня есть COM .dll). Я получил эту ошибку:

TlbExp: ошибка TX0000: Не удалось загрузить файл или сборку 'file:///C:\Windows\system32\ResipBcb.dll' или одну из ее зависимостей. Модуль должен был содержать манифест сборки.

Используя Dependency Walker, я заметил, что два.dll отсутствуют. Я нашел ieshims.dll онлайн, но не могу найти wer.dll. Смотрите этот вопрос.
Я не знаю, имеет ли ошибка tlbexp какое-либо отношение к этому файлу, который отсутствует?

Подводя итог, мой вопрос: как мне получить.tlb из этого.dll? Я не могу найти какой-либо способ извлечь.tlb из этого COM.dll.

С наилучшими пожеланиями
Клинт Камбье

2 ответа

То, что вы пытаетесь сделать, работает только для сборок.NET, а не для собственных COM-серверов. Библиотека типов для них почти всегда встроена в DLL. В Visual Studio используйте Файл + Открыть + Файл и выберите DLL. Откройте узел "TYPELIB", щелкните правой кнопкой мыши ресурс (обычно 1), "Экспорт". Сохраните его, скажем, в каталоге проекта, используйте расширение имени файла.tlb.

TblExp и regasm действительны только для сборок.NET, скорее всего, это стандартная не.NET COM DLL. Таким образом, ни одна из этих двух команд не действительна для этой DLL.

Стандартные COM-объекты регистрируются с использованием regsvr32, Попробуйте запустить это для вашей DLL и посмотрите, правильно ли она регистрируется. Если это произойдет, вы должны увидеть его в обозревателе Centura ActiveX.

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