Allocation d'une structure C dans une dll à partir de C#

Résolu
ClassTiti Messages postés 3 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 17 mars 2006 - 17 mars 2006 à 10:16
ClassTiti Messages postés 3 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 17 mars 2006 - 17 mars 2006 à 11:06
Bonjour,

Après m'être renseigné sur les possibilités d'appel d'une dll à partir de C#, j'ai vu qu'il y avait plusieurs moyens pour appeler les fonctions.
Je voudrais savoir s'il est possible de faire une allocation dynamique d'une structure définie dans la dll et de l'utiliser dans le programme C# comme on l'utiliserait en C.

Merci d'avance

4 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 10:56
Oui bien sûr, tu réécris la structure en t'inspirant du fichier header en C ( *.h ) et tu passe une instance de cette structure à ta fonction, avec le mot clé ref si ta fonction attend un pointeur sur la structure.

exemple :

POINT p = new POINT( );
p.x = 10,
p.y = 10;
DoSomething( ref p ); // passage par pointeur d'un type valeur au code natif.
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 mars 2006 à 10:40
Salut, si ta fonction attend comme paramètre une structure tu dois simplement la réécrire dans le code managé.

Exemple :

[ StructLayout( LayoutKind.Sequential ) ]
public struct POINT
{
public int x;
public int y;
}
0
ClassTiti Messages postés 3 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 17 mars 2006
17 mars 2006 à 10:47
En fait, je dois appeler des fonctions contenues dans la dll (ça j'ai vu comment on faisait) mais il faut que je passe en paramètre de ces fonctions une structure C qui est définie dans la dll mais que je dois au préalable instancié (allocation de la mémoire pour la structure).

Cela peut-il être fait avec ce que tu me proposes (réécrire la structure en code managé) ou autrement ?

Merci de ton aide.
0
ClassTiti Messages postés 3 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 17 mars 2006
17 mars 2006 à 11:06
Merci bcp
0
Rejoignez-nous