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