Bonjour,
J'essaie de faire un extern c d'une fonction que j'utilise après en c#
dans ma fonction je remplis un buffer de la taille BufferSize;
après je copie le contenu du buffer dans Data qui est passé en paramètre par la fonction.
ma fonction c contient les params suivant
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 extern "C" { int ReadSingleFrameBlocking_(unsigned short *Data,unsigned long BufferSize) { Buf = (unsigned short*)malloc(sizeof(unsigned short)*BufferSize); /*ici je remplie le Buf*/ /*apresje copie Buf dans Data*/ for(int i=0;i<BufferSize;i++) { Data[i] = Buf[i]; } return 0; } }
du coté de c# je fais
pour appeler la fonction je fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [DllImport("TestTADLL.dll", EntryPoint = "ReadSingleFrameBlocking_", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)] public static extern int ReadSingleFrameBlocking_(ref UInt16 Data,UInt32 BufferSize);
le but c'est de pouvoir exploiter les données du Data dans c# après avoir été remplie par le code C
Code : Sélectionner tout - Visualiser dans une fenêtre à part res = ReadSingleFrameBlocking_(ref Data, BufferSize);
mais je n'arrive pas à récupérer les informations dans Data ca me renvoi une erreursi quelqu'un à une idée merci d'avance.Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Partager