Как мне создать интерфейсные методы, используя типы .tlb в VS C ++? - PullRequest
2 голосов
/ 19 марта 2010

Справочная информация:

  1. Файл .TLB содержит интерфейсы, написанные на языке 'X'. У меня нет .h, .idl, .tlh или каких-либо других заголовочных файлов - только файл .TLB. Язык 'X' не поддерживает экспорт .h, .idl и т. Д.
  2. Я использую мастер VS для добавления простого объекта ATL в мой проект ATL.

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

// Something like the following in the .idl file:
interface ISomeInterface : IUnknown {
   HRESULT SomeMethod([in] ITypeFromTLB* aVal); // ITypeFromTLB declared in .TLB file.
};

Как я могу это сделать? Я надеюсь на мастера или строку в объявлении интерфейса .idl, которая принесет информацию .tlb. Мидл include (no .tlb), import (no tlb) и importlib (только библиотека), кажется, не обеспечивают решение (мне нужен прокси / заглушка для работы, поэтому я не могу поместить это внутрь объявление библиотеки с помощью команды importlib).

Ответы [ 2 ]

2 голосов
/ 19 марта 2010

Используйте # import в cpp / h для переноса интерфейсов TLB в ваше пространство имен.

1 голос
/ 08 сентября 2010

В командной строке Visual Studio сделать oleview. Затем File -> View Type Lib, дайте ему полный путь к вашему foo.tlb. Теперь в ITypeLib Viewer выполните File -> Save As .. и вы можете экспортировать все 3 (.h, .idl, .c) оттуда.

...