Udostępnij za pomocą


Ostrzeżenie kompilatora (poziom 1) C4772

#import odwoływana do typu z brakującej biblioteki typów; Element "missing-type" używany jako symbol zastępczy

Uwagi

Przywoływała się biblioteka typów z dyrektywą #import . Jednak biblioteka typów zawierała odwołanie do innej biblioteki typów, do których nie odwołuje się #importelement . Ten inny plik .tlb nie został znaleziony przez kompilator.

Należy pamiętać, że kompilator nie znajdzie bibliotek typów w różnych katalogach, jeśli używasz /I (Dodatkowe katalogi dołączania) opcji w celu określenia tych katalogów. Jeśli chcesz, aby kompilator znalazł biblioteki typów w różnych katalogach, dodaj te katalogi do zmiennej środowiskowej PATH.

Domyślnie to ostrzeżenie jest wyświetlane jako błąd. Nie można pominąć C4772 z /W0.

Przykład

Jest to pierwsza biblioteka typów potrzebna do odtworzenia C4772.

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

Jest to druga biblioteka typów potrzebna do odtworzenia 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;
   };
};

Poniższy przykład generuje 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