ATL. Хочу: более одной type-library на одну COM DLL.

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

ATL. Хочу: более одной type-library на одну COM DLL.

Сообщение Woozy »

Как сделать более одной type-library на одну COM DLL?
MS VC++ 6.
Boo
Пользователь
Сообщения: 92
Зарегистрирован: 20 фев 2003, 00:41

Re: ATL. Хочу: более одной type-library на одну COM DLL.

Сообщение Boo »

Woozy писал(а):Как сделать более одной type-library на одну COM DLL?
MS VC++ 6.
не думаю что это вообще возможно. например потому что в функцию LoadTypeLib нельзя передать именя ресурса. поэтому можно иметь только одну typelib на одну dll.
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

MSDN says

Сообщение Woozy »

If the file is a DLL or an executable file, it is loaded. By default, the type library is extracted from the first resource of type ITypeLib. To load a different type of library resource, append an integer index to szFile. For example:
ITypeLib *ptlib;
LoadTypeLib("C:\\MONTANA\\EXE\\MFA.EXE\\3", &ptlib)
This statement loads the type library resource 3 from the file Mfa.exe file.
Boo
Пользователь
Сообщения: 92
Зарегистрирован: 20 фев 2003, 00:41

Сообщение Boo »

ну а тады в чем вопрос-то? засовываешь TLB-шку в свой *.RC файл и делов-то.
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

Boo: Пока ты не написал про эту функцию, я не нашёл в MSDN эту информацию.

Помимо того, хотелось бы без лишних проблем изменять эти интерфейсы, добавлять-удалять методы, что добавлены таким нестандартным образом. Вот если бы ещё один IDL всунуть так чтобы VS понимал...
Boo
Пользователь
Сообщения: 92
Зарегистрирован: 20 фев 2003, 00:41

Сообщение Boo »

добавляешь свой IDL в проект. дальше идешь в 'resource includes' и добавляешь TLB-шку туда таким же макаром как основная, только с другим resource ID. все. только наверно не будет работать ATL-овский визард, хотя это наверное можно поправить.
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

Boo писал(а):добавляешь свой IDL в проект. дальше идешь в 'resource includes' и добавляешь TLB-шку туда таким же макаром как основная, только с другим resource ID. все. только наверно не будет работать ATL-овский визард, хотя это наверное можно поправить.
Спасибо. Вот это попробую - визард - будет работать или нет - даже не очень сильно волнует. С регистрацией / разрегистрацией могут возникнуть небольшие проблемы. DLLRegisterServer и DLLUnRegisterServer надо будет слегка подправить. Предполагаю.
Ответить