1

インターネット チュートリアル (http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5567/Step-by-Step-COM-Tutorial.htm) を通じて COM について学習しています。最初に IDL ファイルを作成し、それをコンパイルして、さらに 5 つのファイルを作成します。詳細は次のとおりです。

  1. VS2010を開く
  2. Win32 DLL プロジェクト名 AddObj を作成
  3. コンテンツを含む 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もインストールしましたが、何も変わりません。

4

1 に答える 1

3

新しいプロジェクトを作成し、指定したコードで新しい idl ファイルを作成しました。右クリックしてコンパイルを選択すると、正常に動作します (VS2010 Ultimate)。
VS のファイル プロパティで正しいファイル タイプを選択しましたか? 「IDLファイル」である必要があります。

手動でコンパイルしようとしたときに、VS コマンド プロンプトを使用しましたか?
(VS コマンド プロンプトは、必要なすべての環境変数を設定します)

于 2012-05-23T12:24:44.187 に答える