Compiler Warning (level 1) C4772

#import referenced a type from a missing type library; 'missing_type' used as a placeholder

A type library was referenced with the #import directive. However, the type library contained a reference to another type library that was not referenced with #import. This other .tlb file was not found by the compiler.

Note that the compiler will not find type libraries in different directories if you use the /I (Additional Include Directories) compiler option to specify those directories. If you want the compiler to find type libraries in different directories, add those directories to the PATH environment variable.

This warning is, by default, issued as an error. C4772 can not be suppressed with /W0.


This is the first type library needed to reproduce C4772.

// c4772a.idl
library C4772aLib
   enum E_C4772a
      one, two, three

This is the second type library needed to reproduce C4772.

// c4772b.idl
// post-build command: del /f C4772a.tlb
// C4772a.tlb is available when c4772b.tlb is built
library C4772bLib
   importlib ("c4772a.tlb");
   struct S_C4772b
      enum E_C4772a e;

The following sample generates 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