Partager via


Avertissement du compilateur (niveau 1) C4772

#import référencé un type à partir d’une bibliothèque de types manquante ; 'missing-type' utilisé comme espace réservé

Une bibliothèque de types a été référencée avec la directive #import . Toutefois, la bibliothèque de types contenait une référence à une autre bibliothèque de types qui n’était pas référencée avec #import. Cet autre fichier .tlb n’a pas été trouvé par le compilateur.

Notez que le compilateur ne trouve pas de bibliothèques de types dans différents répertoires si vous utilisez l’option de compilateur /I (Répertoires Include supplémentaires) pour spécifier ces répertoires. Si vous souhaitez que le compilateur recherche des bibliothèques de types dans différents répertoires, ajoutez ces répertoires à la variable d’environnement PATH.

Par défaut, cet avertissement est émis en tant qu’erreur. Impossible de supprimer C4772 avec /W0.

Exemple

Il s’agit de la première bibliothèque de types nécessaire pour reproduire C4772.

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

Il s’agit de la deuxième bibliothèque de types nécessaire pour reproduire 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’exemple suivant génère l’erreur 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