2016-04-20 41 views
0

私はメインコードでインスタンス化し、別のCOMオブジェクトに渡す必要があるインターフェイスのATL/COM実装を持っています。この実装はC++で行われています。C++ ATL COMオブジェクトへの直接アクセス

私の主なC++コードからは、COMポートではなくオブジェクトに直接アクセスし、クラスメンバーとメソッドに直接アクセスしたいと思います。

私は行く方法は、ATL/COMクラスでDECLARE_NO_REGISTRY()を追加することだと思います。 CoCreateInstanceの代わりにmyCOMClass:CreateObject()を呼び出します。私はこれをどのように使用するのかわかりません(そして、例は見つかりませんでした)。

私はいくつかの組み合わせを試してみましたが、成功しませんでした。直接COMオブジェクトを作成するための

//I added this line to call the lib directly 
#include "comClass\StdAfx.h" 
#include "comClass\comClass_i.c" 
#include "comClass\comClass.h" 

//I removed this line to bypass COM 
//#import "comClass\comClass.dll" 

//What can I put here to replace this block, bypass COM 
//and being able to access class members?? 
CoInitialize(NULL); 
comClassInterface *myObject = NULL; 
HRESULT hr = ::CoCreateInstance(__uuidof(comClass), 
    NULL, 
    CLSCTX_INPROC_SERVER, 
    __uuidof(comClassInterface), 
    (void**)&myObject); 
+0

こちらをご覧くださいhttp://stackoverflow.com/help/mcve –

+1

提案していただきありがとうございます。 Visual Studioで簡単なATL COMクラスを作成することで、最小限の例とはかけ離れたものが作成されます。たぶん問題ははっきりしないかもしれませんが、私はコードを修正するのではなく、必要なことをする方法を見つけようとしています。 – seb007

+0

関連するコードを表示する必要があります。 –

答えて

0

多かれ少なかれ、「標準」ワット:私のメインのコードで

CComObject<comClass> *myObject; 
CComObject<comClass>::CreateInstance(&myObject); 

基本的にはこれだけです..あなたはまた、単に「新しいcomClass」を行うことができますクラスが抽象クラスでない場合は、通常はATLを使用する場合です。

関連する問題