Перечисление IDL не отображается в библиотеке типов
Вопрос
У меня есть 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);
Несмотря на то, что перечисления, о которых идет речь, напрямую не используются никакими методами, они все равно будут полезны всем, кто использует объект, но я не могу заставить их экспортировать.
Кто-нибудь видел это раньше?
Решение
Вы положили их в library
раздел IDL?Только типы, упомянутые в library
раздел переходит в TLB.
library MyLib {
// ...
enum BAR;