Предупреждение компилятора (уровень 1) C4772
#import ссылается на тип из отсутствующих библиотек типов; "отсутствующий тип", используемый в качестве заполнителя
Библиотека типов ссылается на директиву #import . Однако библиотека типов содержала ссылку на другую библиотеку типов, на которую не ссылается #import
ссылка. Этот другой TLB-файл не найден компилятором.
Обратите внимание, что компилятор не найдет библиотеки типов в разных каталогах, если вы используете параметр компилятора /I (Дополнительные каталоги включения), чтобы указать эти каталоги. Если компилятору нужно найти библиотеки типов в разных каталогах, добавьте эти каталоги в переменную среды PATH.
По умолчанию это предупреждение выводится как ошибка. C4772 нельзя отключить с помощью /W0.
Пример
Это первая библиотека типов, необходимая для воспроизведения C4772.
// c4772a.idl
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12b")]
library C4772aLib
{
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c100")]
enum E_C4772a
{
one, two, three
};
};
Это вторая библиотека типов, необходимая для воспроизведения 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;
};
};
Следующий пример приводит к возникновению ошибки 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