Мне нужна помощь, чтобы вызвать функцию C++
из C#
.
Моя C++
функция похожа на:
EXPDLLAPI int fn1
(
unsigned char** pp1,
unsigned int& rp1Length,
unsigned char** pp2,
unsigned int& rp2Length
);
C#
функция, используемая для вызова этой * Функция 1010 * выглядит следующим образом:
[DllImport("sample.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int fn1([MarshalAs(UnmanagedType.LPArray)]byte[]p1Array,
[MarshalAs(UnmanagedType.I4)]int p1Length,
[MarshalAs(UnmanagedType.LPArray)]byte[]p2Array,
[MarshalAs(UnmanagedType.I4)]int p2Length);
Я получаю сообщение об ошибке
Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
Меня беспокоит, правильно ли определение функции C#
? Если определение функции C#
неверно, какое определение будет правильным.
Может ли кто-нибудь сообщить мне совместимость типов между C ++ и C#, т.е. я использую правильный тип в C# для вызова моего C ++ функция.
Заранее спасибо.