Я использую метод Com Interop для связи с неуправляемыми C ++ и C #.
Мне нужно отправить данные в неуправляемый C ++ из C #.
Я уже отправляю значения «bool» из C # & доступ к нему через «VARIANT_BOOL *» в C ++.
Мне нужно отправить целое число из C #. Как я могу получить доступ к этому целому значению на неуправляемой стороне C ++?
например:
public int myValue()
{
return 5;
}
CoInitialize(NULL);
MyNSpace::MyClassPtr IMyPointer;
HRESULT hRes = IMyPointer.CreateInstance(MyNSpace::CLSID_MyClass);
if (hRes == S_OK)
{
//// ??? define x type
IMyPointer->myValue(x);
}
COM позволяет использовать простые (нативные) целочисленные типы, например, LONG. COM ДОЛГО обозначает 32-разрядное целое число со знаком в C ++.
Например,
HRESULT myValue([out, retval] LONG* nOutVal);
В коде клиента (c ++) вы просто должны объявить порядковую переменную int:
if (hRes == S_OK)
{
int x;
hRes = IMyPointer->myValue(x);
}
Других решений пока нет …