Przykład C API podpis:Jak mogę przekazać wskaźnik do tablicy za pomocą p/invoke w C#?
void Func(unsigned char* bytes);
W C, kiedy chcę przekazać wskaźnik do tablicy, mogę zrobić:
unsigned char* bytes = new unsigned char[1000];
Func(bytes); // call
Jak mogę przetłumaczyć powyższy API do P/Invoke tak, że mogę przekazać wskaźnik do tablicy C# byte?
dlaczego pierwsze podejście zadziała, a drugie nie zadziała. Oto, co widzę w aplikacji na telefon z systemem Windows. – moubarak
Wiem, że ten post jest trochę stary, ale 'Marshal.SizeOf (obiekt)' nie działa z tablicami. Jestem całkiem pewien, że dostaniesz wyjątek, jeśli przekażesz mu tablicę, ale nie mam teraz otwartego VS przede mną, aby spróbować. Aby poprawnie określić rozmiar tablicy, dla twojego przykładu kod miałby postać 'Marshal.SizeOf (typeof (byte)) * ar.Length'. – 9ee1
Tak, masz rację 9ee1. Marshal.SizeOf może być użyty dla struktury, ale nie dla tablicy. Zaktualizowałem odpowiedni przykładowy kod. Dzięki. – asponge