Próbuję napisać wrapper wokół C function, który oczekuje wskaźnik funkcji i arbitralne dane użytkownika (void*
). Wskaźnik funkcji Stwierdziłem, jak radzić sobie z używaniem delegatów, ale nie mogę wymyślić, jak przekonwertować object
na void*
.Konwertuj obiekt na pusty * i z powrotem?
mogę mu ref object
zamiast, ponieważ zachowuje się jak wskaźnik AFAIK, ale gdy próbuję że dostaję wyjątek jak
nieprawidłowy VARIANT został wykryty podczas konwersji z niekontrolowana odmianę do zarządzany obiekt. Przekazywanie nieprawidłowych WARIANTÓW do środowiska CLR może spowodować nieoczekiwane wyjątki, uszkodzenie lub utratę danych.
This "solution" może pracować dla mnie, ale pomyślałem, że musi być jakiś sposób, aby przejść do dowolnych danych DLL C tak, że może być przekazywana z powrotem później?
co z IntPtr? –
Osobiście uważam, że lepiej użyć wskaźnika do struktury 'struct' przez blok' fixed' ... –
@NoIdeaForName: C DLL zajmie 'IntPtr' bez problemu, ale jak go zmienić z powrotem do 'obiektu' po powrocie (a także jak" rzucić "obiekt do IntPtr)? – mpen