7

我有一个使用 MS ATL 库编写的 COM 对象。我在 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);

即使有问题的枚举没有被任何方法直接使用,它们仍然对使用该对象的任何人有用,但我无法让它们导出。

有没有人见过这个?

4

1 回答 1

14

你把它们放在libraryIDL 的部分了吗?只有本library节中提到的类型才会进入 TLB。

library MyLib {
    // ...
    enum BAR;
于 2008-09-24T06:54:37.873 回答