Visual Studioには、タイプライブラリをC++プロジェクトにインポートし、定義されたオブジェクトを使用するためのサポートが組み込まれています。また、それは実装ファイルは、プロジェクトとヘッダで構築されるようになります - これは、タイプライブラリをインポートし、そしてファイルと実装ファイルをヘッダーに変換します
#import "CANoe.tlb"
:たとえば、あなたは#import
ディレクティブを使用することができますインクルードするファイルがあるので、これはまさに魔法のようなものです。
次に、型ライブラリに定義されている型とオブジェクトのためのスマートポインタラッパーのtypedefがたくさんあります。
ApplicationPtr app(__uuidof(Application));
これは、実行時に、コクラスアプリケーションは変数app
に作成され、拘束されることに引き起こし、あなたでしょう:コクラスがあったが、インタフェースIApplication
を実装したApplication
と呼ばれる場合たとえば、あなたはこれを行うことができますそのようにそれを呼び出すことができます。
app->DoSomeCoolStuff();
エラー処理は、COM呼び出しの結果を確認し、必要に応じて適切な_com_error例外をスローすることによって行われていることはこれは、あなたが安全に例外を作成する必要がありますを意味します。
感謝。 私はアプリケーションのためのDLLファイルを持っていないので、このアプローチを好むでしょう。 ソースファイルの#import "CANoe.tlb"の後に続くコンパイルエラーが発生しました。 - 不明な文字 '0x1' - 構文エラー: ';'がありません。識別子 'A'の前に - 型指定子がない - が仮定されています。注:C++はdefault-intをサポートしていません - '{':関数形式のヘッダーがありません(古い形式の正式なリスト) いくつかの手順が不足している場合は、お勧めします。 .tlbファイルの内容を確認し、これらのエラーを解決する方法はありますか。 ありがとうございます –
私はあなたがそれを解決しようとすると、あなたが管理しない場合は、十分な詳細を提供する別の質問をすることをお勧めします。 – sharptooth