Aviso do compilador (nível 1) C4772
#import referenciou um tipo de uma biblioteca de tipos ausente; 'missing_type' usado como um espaço reservado
Uma biblioteca de tipos foi referenciada com a diretiva #import. No entanto, a biblioteca de tipos continha uma referência a outra biblioteca de tipos que não foi referenciada com #import
. Esse outro arquivo .tlb não foi encontrado pelo compilador.
Observe que o compilador não encontrará bibliotecas de tipos em diretórios diferentes se você usar a opção do compilador /I (Diretórios de inclusão adicional) para especificar esses diretórios. Se você quiser que o compilador localize bibliotecas de tipos em diretórios diferentes, adicione esses diretórios à variável de ambiente PATH.
Por padrão, esse aviso é emitido como um erro. C4772 não pode ser suprimido com /W0.
Exemplo
Essa é a primeira biblioteca de tipos necessária para reproduzir C4772.
// c4772a.idl
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12b")]
library C4772aLib
{
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c100")]
enum E_C4772a
{
one, two, three
};
};
Essa é a segunda biblioteca de tipos necessária para reproduzir 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;
};
};
O seguinte exemplo gera o aviso 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