Импорт интерфейсов в IDL из внешней библиотеки типов
У меня есть две библиотеки типов с интерфейсами COM, которые я написал, используя ATL и IDL от Microsoft. Я хотел бы, чтобы интерфейс в одной библиотеке наследовал от интерфейса в другой.
По сути, я хотел бы сделать то же самое, что Стивен описал в Как я могу создать методы интерфейса, используя типы.tlb в VS C++?, Единственный человек, который ответил на него, похоже, не понял вопроса.
Вот что я хотел бы сделать в коде:
SomeLibrary DLL / TLB
ISomeInterface.idl
interface ISomeInterface : IDispatch { ... };
SomeLibrary.idl
import "ISomeInterface.idl";
library SomeLibrary
{
interface ISomeInterface;
};
SomeOtherLibrary DLL / TLB
ISomeOtherInterface.idl
// What do I put here so that the MIDL compiler knows
// what to do when it encounters the ISomeInterface type?
interface ISomeOtherInterface : ISomeInterface { ... };
SomeOtherLibrary.idl
import "ISomeOtherInterface.idl";
library SomeOtherLibrary
{
interface ISomeOtherInterface;
};
MIDL import
Директива работает только при импорте файлов IDL, а у меня есть только DLL и TLB. Я не могу использовать importlib
потому что это работает только в library
определение. Компилятор MIDL не понимает Microsoft C++ import
, importidl
, а также importlib
атрибутов.
Что делать?
1 ответ
Если вы хотите ввести шаг вручную, вы можете открыть tlb в oleview и получить сгенерированный файл.idl таким образом. oleview.exe находится в папке b in пакета Windows SDK, например,
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\oleview.exe