Импорт интерфейсов в IDL из внешней библиотеки типов - PullRequest
3 голосов
/ 20 июля 2010

У меня есть две библиотеки типов с интерфейсами COM, которые я написал с использованием ATL и Microsoft IDL.Я хотел бы, чтобы интерфейс в одной библиотеке наследовал от интерфейса в другой.

По сути, я хотел бы сделать то же самое, что Стивен описал на Как создавать методы интерфейса с использованием типов .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 Ответ

2 голосов
/ 20 июля 2010

Если вы хотите ввести шаг вручную, вы можете открыть tlb в oleview и таким образом получить сгенерированный файл .idl. oleview.exe находится в папке bin пакета Windows SDK, например,

  C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\oleview.exe
...