Allocation d'une structure C dans une dll à partir de C# [Résolu]

Signaler
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
17 mars 2006
-
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
17 mars 2006
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
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.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
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;
}
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
17 mars 2006

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.
Messages postés
3
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
17 mars 2006

Merci bcp