У меня есть библиотеки DLL осуществления LZ4 с и я хочу, чтобы вызвать функциюПередача массив символов из C# для C++ DLL
LZ4_compress_default(const char* source,char* dest,int sourceLength,int maxdestLength);
из C# кода. Функция сжимает исходный массив в массив dest. Как это сделать?
Мой C# код:
DllImport(@"CXX.dll", CharSet = CharSet.Ansi, SetLastError = true,
CallingConvention = CallingConvention.Cdecl)]
internal static extern int LZ4_compress_default(
[MarshalAs(UnmanagedType.LPArray)] char[] source, out byte[] dest,
int sourceSize, int maxDestSize);
byte[] result= new byte[maxSize];
int x = LZ4_compress_default(array, out result, size, maxSize);
Должно быть неподписанным char *. Какой аспект этого вы не можете сделать. –
Проблема с передачей массива dest по ссылке. Сжатый массив написан dll. Но я не получаю изменения на стороне C#. –
'[Out] byte [] dest' и, очевидно, вам нужно выделить' dest', прежде чем вы вызовете функцию –