おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

IDL から Cファイル、 H ファイルを作成する

とある OLE/COM オブジェクトを C++ で扱おうと思ったのですが、ヘッダーがなかったので自分で作る方法を調べてみました。

まず、 Platform SDK (私のインストールしているバージョンは Server 2003 SP1) の Tool の OLE/COM Object Viewer を起動して、目的のオブジェクトを探します。メニューの [Object]-[View Type Information] を実行し、 ITypeLib Viewer を起動します。ここで、メニューの [File]-[Save As] で IDL ファイルとして保存します。 (MIDL.EXE のパスが通っていれば、この段階で直接 C ファイルや H ファイルを生成できるのかもしれません。)

次に、 Platform SDK に含まれる IDL コンパイラ MIDL.EXE を使って、 IDL ファイルから H ファイルと UUID の記述された C ファイルを生成します。 Visual C++ (私のインストールしているバージョンは Visual C++ Express 2005) と Platform SDK のコマンドが使えるコマンドプロンプト(適宜パスや環境変数を設定してください)を起動して、
MIDL <IDLファイル> /iid <Cファイル> /h <Hファイル>
とコマンドを打ちます。以上で、 C ファイルと H ファイルが得られます。
※ちなみに、私が ITypeLib Viewer で生成した IDL ファイルを MIDL.EXE でコンパイルするとエラーが発生し、 enum の宣言の位置を前方に修正する必要がありました。


参考
COM プログラミングの基本 (上)
COM プログラミングの基本 (中)
COM プログラミングの基本 (下)


追記
これをビルドするときの話になりますが、 MIDL で C ファイルとして作成したファイル(GUID が含まれている)を(試しに)拡張子を CPP ファイルにしてコンパイルしてみたところ、リンカエラーが発生しました。詳しいことは分かりませんが、 C++ だと何か識別子が変更されてしまっているようです。ソースをちらっとみた感じは、 extern "C" はちゃんと付いているのですけどね。
スポンサーサイト
  1. 2007/03/29(木) 15:15:18|
  2. ソフトウェア開発
  3. | トラックバック:1
  4. | コメント:0
次のページ

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。