Передача данных из C # в неуправляемый C ++ (с помощью COM Interop)

Я использую метод Com Interop для связи с неуправляемыми C ++ и C #.

Мне нужно отправить данные в неуправляемый C ++ из C #.

Я уже отправляю значения «bool» из C # & доступ к нему через «VARIANT_BOOL *» в C ++.

Мне нужно отправить целое число из 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);

}

0

Решение

COM позволяет использовать простые (нативные) целочисленные типы, например, LONG. COM ДОЛГО обозначает 32-разрядное целое число со знаком в C ++.
Например,

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

В коде клиента (c ++) вы просто должны объявить порядковую переменную int:

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

}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]