Enumerazione IDL non visualizzata nella libreria dei tipi
Domanda
Ho un oggetto COM scritto usando la libreria MS ATL. Ho dichiarato un sacco di enumerazioni nell'IDL ma NON vengono visualizzate quando si visualizza la libreria dei tipi utilizzando lo strumento Visualizzatore oggetti COM MS. Il problema sembra essere che gli enumeratori mancanti non vengono effettivamente utilizzati come parametri da nessuno dei metodi COM: come posso forzare la visualizzazione di questi enumeratori?
Ad esempio, nell'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);
Anche se gli enum in questione non sono utilizzati direttamente da alcun metodo, saranno comunque utili a chiunque utilizzi l'oggetto, ma non riesco a farli esportare.
Qualcuno l'ha mai visto prima?
Soluzione
Li hai inseriti nella sezione library
dell'IDL? Solo i tipi menzionati nella sezione library
vanno nel TLB.
library MyLib {
// ...
enum BAR;