VC++ の #import はどんなとき使う？


Visual C++ には `#import`
というディレクティブがあることを[別のご質問](https://ja.stackoverflow.com/q/50142/19110)で知りました。[MSDN
によると](https://docs.microsoft.com/ja-jp/cpp/preprocessor/hash-import-directive-
cpp?view=vs-2017) `#import` は「タイプ
ライブラリからの情報を組み込むために使用」するらしいのですが、いまいちユースケースが分かりません。

`#import` は具体的にどのような場面で使うディレクティブなのでしょうか？

### 関連質問？

  * [C++ include and import difference](https://stackoverflow.com/q/172262/5989200) \-- Stack Overflow
  * [Replacement for #import in Visual C++](https://stackoverflow.com/q/650578/5989200) \-- Stack Overflow




C++言語ではヘッダーファイルでプロトタイプ宣言を行い、リンクは別の仕組みを使っています。ヘッダーファイルはC++言語特有のもので、他のプログラミング言語との相互運用が困難になります。

そこでMicrosoftは言語非依存・プラットフォーム非依存の[COM; Component Object
Model](https://docs.microsoft.com/en-us/windows/desktop/com/component-object-
model--com--portal)を定義しました。この中でIDL; Interface Definition LanguageとTLB; Type
Libraryが定義されています。  
その上で、C++言語ソースからType Libraryを読み込む機能が`#import`ディレクティブとなっています。

ですので、COMを呼び出しを行わない限りは出番はありません。




C++言語ではヘッダーファイルでプロトタイプ宣言を行い、リンクは別の仕組みを使っています。ヘッダーファイルはC++言語特有のもので、他のプログラミング言語との相互運用が困難になります。

そこでMicrosoftは言語非依存・プラットフォーム非依存の[COM; Component Object
Model](https://docs.microsoft.com/en-us/windows/desktop/com/component-object-
model--com--portal)を定義しました。この中でIDL; Interface Definition LanguageとTLB; Type
Libraryが定義されています。  
その上で、C++言語ソースからType Libraryを読み込む機能が`#import`ディレクティブとなっています。

ですので、COMを呼び出しを行わない限りは出番はありません。

