Как код COM-клиента ссылается на IID в библиотеке типов?

#visual-c #com

#visual-c #com

Вопрос:

Компиляция COM-клиента, исходный код которого содержит строку типа

 #import "../server/IFoo.tlb"
 

генерирует ifoo.tlh в текущем рабочем каталоге.

В ifoo.tlh есть идентификаторы IID в строковой форме, обернутые вызовами функций (или похожих на функции макросов), например uuid("6bee2d26-f3d8-11d4-825d-00104b3646c0") , что означает .файл tlh определенно знает значения IID. Вопрос в том, что в клиентских кодах, как я могу ссылаться на эти IID без #include какого-либо файла заголовка COM-сервера? В .файл tlh или файл .tlb, существуют ли какие-либо (скомпилированные) символы, представляющие IID, которые мы можем использовать в клиентских кодах? Спасибо.

Ответ №1:

Вы можете использовать оператор __uuidof (специфичный для Microsoft):

Извлекает идентификатор GUID, прикрепленный к выражению.

Синтаксис

__uuidof (выражение)