Compartir vía


Advertencia del compilador (nivel 1) C4772

#import hizo referencia a un tipo de una biblioteca de tipos que falta; se utilizó "missing-type" como marcador de posición

Se hizo referencia a una biblioteca de tipos con la directiva #import . No obstante, la biblioteca de tipos contenía una referencia a otra biblioteca de tipos a la que no se hacía referencia con #import. El compilado no encontró este otro archivo .tlb.

Tenga en cuenta que el compilador no encontrará bibliotecas de tipos en directorios diferentes si usa la opción del compilador /I (Directorios de inclusión adicionales) para especificar esos directorios. Si desea que el compilador encuentre bibliotecas de tipos en directorios diferentes, agregue esos directorios a la variable de entorno PATH.

De manera predeterminada, esta advertencia se emite como un error. C4772 no se puede suprimir con /W0.

Ejemplo

Esta es la primera biblioteca de tipos necesaria para reproducir la advertencia C4772.

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

Esta es la segunda biblioteca de tipos necesaria para reproducir la advertencia 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;
   };
};

El ejemplo siguiente genera la advertencia 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