Перечисление IDL не отображается в библиотеке типов - PullRequest
7 голосов
/ 24 сентября 2008

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

Например, в 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);

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

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

1 Ответ

14 голосов
/ 24 сентября 2008

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

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