J'appelle une fonction C++ de C#. En tant qu'arguments, il reçoit un pointeur vers un tableau de structures.Marquer un tableau de structures
struct A
{
int data;
}
int CFunction (A* pointerToFirstElementOfArray, int NumberOfArrayElements)
En C# J'ai créé le même struct (en classe) et je Marshall correctement (le premier élément du tableau est reçu correctement). Voici mon C# définition du struct C++:
[StructLayout(LayoutKind.Sequential), Serializable]
class A
{
int data;
}
Le premier élément est lu correctement, donc je connais tous les champs de la struct sont rassemblèrent correctement. Le problème se produit lorsque j'essaie d'envoyer un tableau d'éléments. Comment créer un tableau de classes qui seront dans un seul bloc de mémoire (morceau), de sorte que la fonction C++ peut incrémenter le pointeur sur le tableau?
Je suppose que j'aurais besoin de quelque chose de similaire à stackalloc, mais je crois que cela ne fonctionne que pour les types primitifs?
Nous vous remercions de votre aide.
Connaissez-vous la taille de la baie que vous envoyez au moment de la compilation? –
@ohadsc Non, c'est une longueur d'un tableau (tableau différent), elle est seulement connue au moment de l'exécution. –