Visual Studio は IDL ファイルをコンパイルする順序をどのように決定しますか?
-
15-09-2020 - |
質問
COM プロジェクトには多数の IDL ファイルが含まれており、その一部は他のファイルにインポートされています。Visual Studio は、(MIDL を使用して) 最初にコンパイルするものをどのように決定しますか?
順番をコントロールしたい。いくつかのインポートを含むライブラリ宣言を含むマスター IDL ファイルがありますが、それが最初にコンパイルされたものでない場合はビルド エラーが発生します。
(これが本当に奇妙に聞こえる場合は...私は COM/ATL を初めて使用するので、本当に非常に混乱しています)。
解決
Visual Studio に、.ild ファイルを特定の順序でビルドするように指示することはできません。代わりに、次のことができます #include
一部の .idl ファイルを他の .idl ファイルにコピーし、インポートしたファイルを「ビルドから除外」に設定します。この方法では、MIDL はインポートされたファイルを個別にコンパイルするのではなく、その内容を別のファイルの特定の場所に組み込み、そのファイルの一部としてコンパイルします (C プリプロセッサの場合と同じ効果) #include
).
他のヒント
あなたはあなたが望む順序でVisual Studioを構築することができます、これを行う2つの方法があります:
-
最初に構築したいものを構築するためにそれを得ることができるプリビルドステップに入れてください。
-
最初に構築したいものを別のプロジェクトに置き、もう1つ依存してそのプロジェクトを構築するようにしてください。
IDLファイルを変更できない場合は、できることです。ただし、1つのIDLファイルが本当に別のものに依存している場合は、それらを変更してから、上記の提案されたことをして、もう一方を含めるようにしてください。