Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как нужно импортировать библиотеку типов для создания COM-интерфейса?

518
23 ноября 2007 года
Andreika
101 / / 14.02.2003
Есть задача:
Написать COM-dll, которая реализует некий интерфейс. Интерфейс описан в tlb файле с именем, скажем, SomeTLB.tlb.

Дело в том, что с тонкостями IDE Builder я не слишком знаком. Что нужно нажать, чтобы сгенерировался файл с объявлениями интерфейса, который потом надо наполнить нужным функционалом?

Что делаю я:
File\New\Other, там на вкладке ActiveX несколько значков. Не знаю, какой надо выбрать правильно, из названия не совсем понятно, я выбираю COM Object. Далее, необходимо указать имя класса и реализуемый интерфейс в поле Implements. В поле есть возможность выбрать интерфейс из списка и кнопка Add Library, если в списке нужного интерфейса нет. Нажимаю Add Library, выбираю SomeTLB.tlb, но она в списке не появляется.

Как правильно сделать, чтобы создать костяк COM-объекта, с интерфейсом, импортированным из Type Library, да, и еще, какой тип проекта надо создать чтобы он компилировался в COM-dll?
Заранее спасибо.
1
23 ноября 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Andreika
Есть задача:
Написать COM-dll, которая реализует некий интерфейс. Интерфейс описан в tlb файле с именем, скажем, SomeTLB.tlb.

Дело в том, что с тонкостями IDE Builder я не слишком знаком. Что нужно нажать, чтобы сгенерировался файл с объявлениями интерфейса, который потом надо наполнить нужным функционалом?

Что делаю я:
File\New\Other, там на вкладке ActiveX несколько значков. Не знаю, какой надо выбрать правильно, из названия не совсем понятно, я выбираю COM Object. Далее, необходимо указать имя класса и реализуемый интерфейс в поле Implements. В поле есть возможность выбрать интерфейс из списка и кнопка Add Library, если в списке нужного интерфейса нет. Нажимаю Add Library, выбираю SomeTLB.tlb, но она в списке не появляется.

Как правильно сделать, чтобы создать костяк COM-объекта, с интерфейсом, импортированным из Type Library, да, и еще, какой тип проекта надо создать чтобы он компилировался в COM-dll?
Заранее спасибо.


Если вам необходим СОМ-сервер в длл - необходимо для начала создать приложение типа ActiveX Library.
После этого необходимо добавить необходимый класс - подробное описание читайте в Инете - описано это не однократно - ваша задача определиться что будет ваш объект делать. Если вам необходим только объект с пользовательским интерфейсом - выбирайте тип СОМ-объект. Если необходим СОМ+собития соответственно COM+ Event Object и т.д. В справке и руководстве разработчика достаточно подробно все расписано - кроме того предполагается что с концепцией СОМ(DCOM) вы знакомы. Можете поискать мои темы - примерно 3-х годичной давности - некоторые моменты я тогда рассматривал.

518
26 ноября 2007 года
Andreika
101 / / 14.02.2003
С типом проекта понятно. Дело в том, что интерфейс уже жестко определен и хранится в файле *.tlb. Builder создает голый проект и предлагает с нуля набить интерфейс в новый tlb. Тогда все объявления он сгенерирует и будет счастье.
Можно ли заставить Builder сгенерить все необходимые объявления основываясь на уже готовой библиотеке типов, поскольку, создавать с нуля то, что уже есть, имхо, нехорошо? Да к тому же и это будет довольно долгая работа.
Подменить tlb, создаваемый Builder'ом на нужный не удается.
1
26 ноября 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Andreika
С типом проекта понятно. Дело в том, что интерфейс уже жестко определен и хранится в файле *.tlb. Builder создает голый проект и предлагает с нуля набить интерфейс в новый tlb. Тогда все объявления он сгенерирует и будет счастье.
Можно ли заставить Builder сгенерить все необходимые объявления основываясь на уже готовой библиотеке типов, поскольку, создавать с нуля то, что уже есть, имхо, нехорошо? Да к тому же и это будет довольно долгая работа.
Подменить tlb, создаваемый Builder'ом на нужный не удается.


Хм. А что просто добавить в проект - не получается? Project\Import Type Library? В чем проблема то? или использовать консольную утилиту tlibimp.exe

518
26 ноября 2007 года
Andreika
101 / / 14.02.2003
Я пишу COM-сервер, т. е. саму реализацию функций, объявленных в интерфейсах из tlb. Я хочу, чтобы Builder сгенерировал CoClasses для этой библиотеки и файлы SomeClassImpl.cpp, которые генерятся, если я добавляю в проект File/New/Other.../Automation Object
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог