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

Фон:

  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 (без.tlb), import (без tlb) и importlib (только для библиотеки) в мидл не дают решения (мне нужен прокси / заглушка для работы, поэтому я не могу поместить это в объявление библиотеки с помощью importlib команда).

2 ответа

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

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

Другие вопросы по тегам