インターネット チュートリアル (http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5567/Step-by-Step-COM-Tutorial.htm) を通じて COM について学習しています。最初に IDL ファイルを作成し、それをコンパイルして、さらに 5 つのファイルを作成します。詳細は次のとおりです。
- VS2010を開く
- Win32 DLL プロジェクト名 AddObj を作成
コンテンツを含む IAdd.idl ファイルを追加します
「unknwn.idl」をインポートします。
[ object, uuid(1221db62-f3d8-11d4-825d-00104b3646c0), helpstring("インターフェイス IAdd は超高速加算アルゴリズムの実装に使用されます") ]
インターフェイス IAdd : IUnknown { HRESULT SetFirstNumber(long nX1);
HRESULT SetSecondNumber(long nX2); HRESULT DoTheAddition([out,retval] long *pBuffer); };
[ uuid(3ff1aab8-f3d8-11d4-825d-00104b3646c0), helpstring("Code Guru アルゴリズム実装のインターフェイス .") ] library CodeGuruMathLib { importlib("stdole32.tlb"); importlib("stdole2.tlb");
インターフェイス IAdd; }
その後、チュートリアルに従ってください。IAdd.idl ファイルをコンパイルすると、以下が生成されます。
--IAdd.h C++ スタイルのインターフェイス宣言が含まれています。
--dlldata.c プロキシ DLL のコードが含まれています。別のプロセス/コンピューターでオブジェクトを呼び出すときに役立ちます。
--IAdd.tlb バイナリ ファイル。明確に定義された形式で、インターフェース IAdd とそのすべてのメソッドを完全に記述します。このファイルは、COM コンポーネントのすべてのクライアントに配布されます。
--IAdd_p.c プロキシ DLL のマーシャリング コードが含まれます。別のプロセス/コンピューターでオブジェクトを呼び出すときに役立ちます。
--IAdd_i.c インターフェイス IID が含まれます
しかし、右クリックしてIAddをコンパイルし、ショートカットメニューでコンパイルを選択すると、生成されるファイルはありません。しかし、ビュークラスを開くと、いくつかのメソッドを持つ IAdd インターフェイスが表示されます。
また、インターネットから midl.exe をダウンロードしてコマンド ラインで実行し、手動でコンパイルしてみましたが、失敗しました。
私はグーグルで多くの資料を精査し、ビジュアルスタジオでidlファイルをコンパイルできると言っていましたが、両方のコンピューターで何度も試しましたが、idlファイルをコンパイルした後にファイルが生成されませんでした。新しいWin7、新しいVisual Studio 2010 Ultimateもインストールしましたが、何も変わりません。