次の方法で共有


コンパイラの警告 (レベル 1) C4772

#import は存在しない型ライブラリから型を参照しました。'missing-type' はプレースホルダーとして使用されます

タイプ ライブラリが、#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 を再現するために必要な 2 番目のタイプ ライブラリです。

// 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