mam metodę w unmaged obiektu COM który próbuję MarshallJak obsłużyć LPSTR ** w .NET?
STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0;
Ale nie mogę dowiedzieć się, w odpowiedni sposób, aby zebrać się LPSTR ** przedmiotów. To powinna być lista przedmiotów. Jeśli jednak spróbujesz zrobić coś takiego:
[PreserveSig]
int SomeMethod([MarshalAs(UnmanagedType.LPStr)]ref StringBuilder items, ref uint numOfItems);
Otrzymuję tylko pierwszą literę pierwszego przedmiotu i nic więcej.
Jak poprawnie zmanować zmienną LPSTR **?
ten powinien być bardziej jak StringBuilder '[]'. Możesz kontrolować ten parametr ręcznie, patrz np. [To pytanie] (http://stackoverflow.com/q/16857034/1997232). – Sinatr
@Sinatr, Próbowałem używać StringBuilder [], ale w tym przypadku otrzymuję ten błąd: "Wystąpił Managed Debugging Assistant" Wystąpił ContextSwitchDeadlock ". Rzucimy okiem na podany przez ciebie link. – user208478
Co to jest kierunek rozrządowy? In, Out, Both? – arbiter