0

Com Interop メソッドを使用して、アンマネージ C++ および C# と通信しています。

C# からアンマネージ C++ にデータを送信する必要があります。

私はすでにC#から「bool」値を送信しており、C ++で「VARIANT_BOOL *」を介してアクセスしています。

C# から整数を送信する必要があります。アンマネージ C++ 側でその整数値にアクセスするにはどうすればよいですか?

例えば:

C#

 public int myValue()
        {
            return 5;
        }

アンマネージ C++

CoInitialize(NULL);
MyNSpace::MyClassPtr IMyPointer;

 HRESULT  hRes =  IMyPointer.CreateInstance(MyNSpace::CLSID_MyClass);

if (hRes == S_OK)
{
//// ??? define x type

IMyPointer->myValue(x);

}
4

1 に答える 1

1

COM では、LONG などのプレーン (ネイティブ) 整数型を使用できます。COM LONGは、C++ の 32 ビット符号付き整数を表します。例えば、

HRESULT myValue([out, retval] LONG* nOutVal);

クライアント (c++) コードでは、序数の int 変数を宣言するだけです。

if (hRes == S_OK)
{
    int x;
    hRes = IMyPointer->myValue(x);

}
于 2013-09-30T10:13:29.587 に答える