Использование 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.

С уважением, Клинт Камбье


person Starceaker    schedule 28.12.2010    source источник


Ответы (2)


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

person Hans Passant    schedule 28.12.2010

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

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

person shf301    schedule 28.12.2010
comment
Впоследствии я заметил, что TlbExp работал только со сборками .NET. TlbImp работает с COM .dll. Это вызвало у меня замешательство. Я знаю, что Regsvr32 работать не будет. Собираюсь опробовать предложение Ганса Пассанта. - person Starceaker; 29.12.2010
comment
Я больше не мог редактировать свой комментарий, я имел в виду, что я уже пробовал regsvr32, и это не сработало. Попробую еще раз, не помешает попробовать. - person Starceaker; 29.12.2010