Sommaire

Échange de tableaux

1. Du C# au C/C++

En C/C++, un tableau est un pointeur sur une zone mémoire contenant un nombre défini de "cases". Ces cases sont typées et leur nombre fixé lors de la création du tableau. On a des tableaux de bytes, de int, de char, etc. En C#, le tableau est un objet contenant également une suite de données avec un jeu de méthodes et d’attributs pour les exploiter.

L’exemple qui suit (projet PInvoke04 à télécharger) va montrer comment un tableau peut passer du C# au C/C++.

Côté C/C++, il y a une fonction qui récupère un tableau et qui affiche son contenu sur la console. Le tableau est déclaré par un pointeur typé passé en premier paramètre et par la taille qui est passée en second paramètre. Ainsi, le côté "C" va pouvoir effectuer une itération dans ses limites.

#include "stdafx.h" 
#include <stdio.h> 
#include "Dll_C.h" 
 
__declspec(dllexport) void AfficheTableau(const int* pTab, size_t 
iTaille) 
{ 
    int* p = pTab; 
    for (size_t i = 0; i < iTaille; i++) 
    { 
        printf("%d\r\n", *p++); 
    } 
}

Côté C#, la fonction C est déclarée avec un premier paramètre de type tableau précédé par la directive [ InIn]. Cette directive [In] ...