ネイティブC++でstruct
があります。これはCOMオブジェクトに渡す必要があります。どちらも同じヘッダファイルを共有しているため、COMオブジェクトと私のコードの間に構造体定義に違いはありません。 COMメソッドは、パラメータとしてstruct
へのポインタを予期します。 int、float、stringなどの型をCOMにパラメーターとして渡すことができます。これは、variant_t vtArg(myIntValue)
のような型に変換します。ユーザー定義の構造体をC++のバリアントに変換する方法は?
struct
をバリアントに変換するにはどうすればよいですか?
COMメソッドのシグネチャは、このようなものです:
bool ComMethod(HANDLE *myHandle, MyStruct *myStruct)
これは、私はCOMメソッドの引数を構築する方法である:
SAFEARRAY *pMethodArgs = SafeArrayCreateVector(VT_VARIANT, 0, 2);
LONG index = 0;
SafeArrayPutElement(pMethodArgs, &index, &myHandle);
index = 1;
SafeArrayPutElement(pMethodArgs, &index, &myStruct);
COMコールの両側にネイティブC++があるような音... COMを使用する理由は何ですか? – Niall
アプリケーションレベルではいくつかのことが関係しています。だから、それはCOMコールです。 –
'PVOID byref;'メンバーがあります。あなたはそれを使うことができます。しかし、COMアプリケーションの残りの非Cコードおよび非C++コードと互換性がない可能性があります。最良の方法は、すべての方法を行って、別のCOMオブジェクトに構造体をラップすることがあります。 – Niall