Импорт интерфейсов в 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
Другие вопросы по тегам