0

.dll である com オブジェクトをビジュアル C++ のローカル マシン上でインスタンス化する必要があります。CoCreateInstance("clsid") を使用して実行できることはわかっていますが、宣言について混乱しています。関係するすべての手順を説明できる人はいますか? レイト バインディングとアーリー バインディングの両方に対応

  1. インポート/インクルードが必要ですか
  2. com オブジェクトを宣言する方法は?
  3. createinstance の前に必要なその他の手順 (例: CoInitialize?)

または、ステップバイステップのコードを含む特定の参照を提供します

4

2 に答える 2

0

最初に呼び出す必要があり、初期化が成功した場合はCoInitialize呼び出すことを忘れないでください。CoUnitialize

したがって、コードは次の構造になります。

HRESULT hr = CoInitialize(NULL); 
if (SUCCEEDED(hr))
{
    try
    {
        CoCreateInstance(...)
        // ...
    }
    catch (_com_error &e)
    {
        //...
    }
    CoUninitialize();
}

詳細については、MSDNを参照してください。COM ライブラリから始めることをお勧めします。次に、 CoInitializeおよびCoCreateInstance関数を使用する前に、それらについて読む必要があります。

このチュートリアルも役に立ちます: Introduction to COM - What It Is and How to Use It .

于 2012-01-31T19:55:55.430 に答える
0
  1. #import非常にお勧めです。#import を使用して typelib をインポートすると、ネイティブ COM フレームワークを使用することになります。

  2. ネイティブ COM では、次のようになります。

    LibName::IMyInterfacePtr pInterface;

生の C++ の場合:

IMyInterface *pInterface;

しかし、上記を参照してください。

  1. プログラムの最初に CoInitialize() を呼び出し、最後に CoUninitialize() を呼び出します。DLL 内で実行する場合は、はるかに複雑になります。
于 2012-01-31T19:56:33.290 に答える