将数据从C#传递到非托管C ++(使用COM Interop)

时间:2013-09-30 09:52:09

标签: c++ com-interop

我正在使用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);

}

1 个答案:

答案 0 :(得分: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);

}