J'essaie de passer un tableau d'objets de C# à C++ non géré, et rien ne semble fonctionner.Comment passer un tableau d'objets en code non managé?
Le compilateur ne me laissera pas prétendre que le tableau est un IntPtr. Casting le tableau à un IntPtr ne fonctionne pas. J'ai essayé de transmettre l'adresse des données épinglées, mais cela n'a pas fonctionné non plus.
J'ai juste besoin de passer un pointeur au début du tableau, et cela s'avère incroyablement difficile.
Des suggestions ou des liens? Merci!
Comment vous attendez-vous à voir ce tableau à partir d'un code non géré (c'est-à-dire quel sera le type d'élément)? –
J'ai (j'espère) la même définition d'objet sur les côtés C# et C++. La fonction appelée a un pointeur sur ce type en tant que paramètre. – user20493
Vous voulez dire une définition de classe C++? Cela ne fonctionne pas comme ça. La mise en page en mémoire d'une classe CLR est définie par l'implémentation, vous ne pouvez pas la faire correspondre à C++. Ce que vous pouvez faire, c'est que les objets implémentent une interface et fournissent une définition non gérée de cette interface sur une taille non gérée, puis laissez P/Invoke rassembler le tableau. –