Использование tlbexp.exe на COM DLL - PullRequest
5 голосов
/ 28 декабря 2010

Я пытаюсь установить связь между 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 ]

9 голосов
/ 28 декабря 2010

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

2 голосов
/ 28 декабря 2010

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

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

...