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 回答