Страница 1 из 1

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

Добавлено: 17 апр 2003, 10:37
Woozy
Как сделать более одной type-library на одну COM DLL?
MS VC++ 6.

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

Добавлено: 17 апр 2003, 12:54
Boo
Woozy писал(а):Как сделать более одной type-library на одну COM DLL?
MS VC++ 6.
не думаю что это вообще возможно. например потому что в функцию LoadTypeLib нельзя передать именя ресурса. поэтому можно иметь только одну typelib на одну dll.

MSDN says

Добавлено: 17 апр 2003, 13:03
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.

Добавлено: 17 апр 2003, 14:44
Boo
ну а тады в чем вопрос-то? засовываешь TLB-шку в свой *.RC файл и делов-то.

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

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

Добавлено: 17 апр 2003, 18:39
Boo
добавляешь свой IDL в проект. дальше идешь в 'resource includes' и добавляешь TLB-шку туда таким же макаром как основная, только с другим resource ID. все. только наверно не будет работать ATL-овский визард, хотя это наверное можно поправить.

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