Bonjour à tous 
Je souhaite appeller depuis mon code C# une fonction C ayant la signature suivante
bool GetMyStructC(MyStructC mystruct);
où MyStructC est définie ainsi :
1 2 3 4
| struct MyStructC
{
BYTE data[88]
}; |
J'ai donc défini une structure en C# équivalente à celle en C
1 2 3 4
| unsafe struct MyStructCSharp
{
public fixed Byte data[88];
}; |
puis rajouter le DLLImport suivant
1 2
| [DllImport("ma_dll_C.dll")]
static extern Boolean GetMyStructC(MyStructCSharp mystruct); |
enfin j'apelle cette fonction depuis le code C# de la façon suivante :
1 2
| MyStructCSharp myStruct = new MyStructCSharp();
GetMyStructC(myStruct); |
Le problème est que au retour de cette fonction, le contenu de myStruct reste inchangé !
Je me suis dis qu'il fallait surement utiliser les attributs in, out ou ref, mais cela me lève des erreurs. J'ai aussi essayé de fournir à la fonction GetMyStruct un IntPtr pointant sur une zone de mémoire allouée avec Marshall.AllocHGlobal ... mais sans succès
Pouvez-vous m'indiquer quel est le meilleur moyen pour obtenir le contenu de MyStructC qui est retourné par la fonction C (Sachant que je travail en CF .NET 3.5)?
Merci
Partager