Wenn ich diese Struktur mit StructureToPtr
marshale und sie dann wieder mit PtrToStructure
entpacke, hat mein erster Knoten y = {1,2}, während mein zweiter Knoten y = {1,0} hat.
Ich habe keine Ahnung warum, vielleicht ist meine Struktur irgendwie schlecht? Das Entfernen der bool
von der Struktur macht es funktioniert.
Das geht tatsächlich schief. Es ist der Aufruf von StructureToPtr (), der nicht genügend Byte kopieren kann. Sie können dies sehen, indem Sie Debug + Windows + Memory + Memory1 verwenden und "ptr" in das Adressfeld schreiben. Verwenden des Operators sizeof isn ' t korrigieren , aber nicht die Ursache des Problems. Nur das erste Element des Arrays wird kopiert, unabhängig von der Array-Länge. Nicht sicher, was dieses Problem verursacht, verwende ich nie behoben in pinvoke. Ich kann nur den traditionellen Pinvoke-Weg empfehlen, der gut funktioniert:
%Vor%Sie können eine Nachricht an connect.microsoft.com senden, wenn Sie dies den CLR-Interop-Mastern zur Kenntnis bringen möchten.
Sie sollten auch die Struktur oder Klasse packen, bevor Sie sie verwenden. Das funktioniert für mich, fast so gut wie memcpy
%Vor%Tags und Links c# marshalling