Salut, j'ai un petit problème à vous soumettre !
Voilà pour charger une strcuture j'aimerai utiliser l'a fonction fopen du C et C++
J'effectue donc un import dans le C#.
Au moment où je veux lire les données du fichier, j'ai une erreur 'Tentative de lecture ou d'écriture de mémoire protégée' , comme si j'on avais un comflit entre mon code managé et non managé ... je ne pense pas que ce soit le cas ?
Si quelqu'un a eu le même problème, je suis preneur de la solution.
Merci d'avance.
Mon code:
[System.Runtime.InteropServices.DllImport("msvcrt.dll", SetLastError = true)]
static extern unsafe int fopen(String filename, String mode);
[System.Runtime.InteropServices.DllImport("msvcrt.dll", SetLastError = true)]
static extern unsafe int fclose(int hStream);
static extern unsafe int fread(void* buffer, long size, long count, int hStream);
[System.Runtime.InteropServices.DllImport("msvcrt.dll", SetLastError = true)]
private struct Pos {
public int X;
public int Y;
}
private unsafe int FileRead(int hStream, void*p buffer, int size)
{
try {
//// Provoque une erreur ????????
return fread(buffer, 1, size, hStream);
}
catch {
///// -------> Erreur: 'Tentative de lecture ou d'écriture de mémoire protégée'
return -1;
}
}
// Fonction principale
private void Load()
{
unsafe {
int file;
file = fopen("Toto.dat", "r");
if (file != 0) {
fixed (void* p = &pos) FileRead(file, p, sizeof(Pos));
fclose(file);
}
}
}