2008-09-24 7 views
6

У меня есть COM-объект, написанный с использованием библиотеки MS ATL. Я объявлял кучу перечислений в IDL, но они НЕ появляются при просмотре библиотеки типов с помощью средства MS COM Object Viewer. Проблема заключается в том, что недостающие перечисления фактически не используются в качестве параметров каким-либо из методов COM - как я могу заставить эти перечисления появляться?IDL перечисление не отображается в библиотеке типов

Например, в IDL:

// Used by Foo method, so appears in the type library 
typedef enum FOO 
{ 
    FOO_1, 
    FOO_2, 
} FOO; 

// Not used by any method, so won't appear in the type library 
typedef enum BAR 
{ 
    BAR_1, 
    BAR_2, 
} BAR; 

[id(1)] HRESULT Foo([in] FOO eFoo); 

Даже несмотря на то, перечислений в вопросе непосредственно не используются любыми способами, они все еще будут полезны для тех, кто с помощью объекта, но я не могу получить их на экспорт.

Кто-нибудь видел это раньше?

ответ

13

Вы поместили их в раздел library IDL? Только типы, упомянутые в разделе library, входят в TLB.

library MyLib { 
    // ... 
    enum BAR; 
+0

Это сделало трюк! Спасибо. – Rob

+0

Приятно слышать. Что вы знаете, StackOverflow на самом деле помогает людям найти помощь! : o) – Motti

+0

Отлично подходит для тех же самых – thatsalok

 Смежные вопросы

  • Нет связанных вопросов^_^