Совместимость .NET и C ++ - PullRequest
       3

Совместимость .NET и C ++

0 голосов
/ 26 марта 2012

У меня есть C ++ dll, в котором есть экспортируемая функция со следующей подписью ...

__declspec(dllexport) __stdcall
 void Paint(LPDISPATCH& disp, VARIANT& x, VARIANT& y, VARIANT& z);

Я хочу вызвать эту экспортированную функцию из C # .NET.Для этого используется следующий прототип ...

[DllImport("xyz.dll", 
CallingConvention = CallingConvention.StdCall)
public static extern void Paint(
            [MarshalAs(UnmanagedType.IDispatch), In, Out] ref object which,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object x,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object y,
            [MarshalAs(UnmanagedType.I4), In, Out] ref object x);

Когда я пытался вызвать вызов, возникает исключение, говорящее, что Попытка чтения / записи памяти недопустима.

Пожалуйста, сообщите мне об этом, о том, как P / вызвать этот C ++ API из .NET.

Большое спасибо, Sundareswaran Senthilvel

1 Ответ

1 голос
/ 26 марта 2012

У вас есть разные типы возврата, объявлено, что оно возвращает void, но вы импортируете его с bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...