Avviso del compilatore (livello 1) C4772

#import fatto riferimento a un tipo da una libreria dei tipi mancante; 'missing-type' usato come segnaposto

È stato fatto riferimento a una libreria dei tipi con la direttiva #import . Tuttavia, la libreria dei tipi contiene un riferimento a un'altra libreria dei tipi a cui non è stato fatto riferimento con #import. Questo altro file con estensione tlb non è stato trovato dal compilatore.

Si noti che il compilatore non troverà librerie dei tipi in directory diverse se si usa l'opzione del compilatore /I (Directory di inclusione aggiuntive) per specificare tali directory. Se si desidera che il compilatore trovi librerie dei tipi in directory diverse, aggiungere tali directory alla variabile di ambiente PATH.

Per impostazione predefinita, questo avviso viene generato come errore. Impossibile eliminare C4772 con /W0.

Esempio

Questa è la prima libreria dei tipi necessaria per riprodurre C4772.

// c4772a.idl
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12b")]
library C4772aLib
{
   [uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c100")]
   enum E_C4772a
   {
      one, two, three
   };
};

Questa è la seconda libreria dei tipi necessaria per riprodurre C4772.

// c4772b.idl
// post-build command: del /f C4772a.tlb
// C4772a.tlb is available when c4772b.tlb is built
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12d")]
library C4772bLib
{
   importlib ("c4772a.tlb");
   [uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12e")]
   struct S_C4772b
   {
      enum E_C4772a e;
   };
};

L'esempio seguente genera l'errore C4772:

// C4772.cpp
// assumes that C4772a.tlb is not available to the compiler
// #import "C4772a.tlb"
#import "C4772b.tlb"   // C4772 uncomment previous line to resolve
                       // and make sure c4772a.tlb is on disk