Lecture d'un fichier créé dans une application mfc à l'aide de CFile dans C# à l'aide du fichier memorymappedfile. Mais il montre l'erreur ci-dessous lors de l'exécution.Erreur lors de la lecture du fichier MFC dans C# à l'aide du fichier memorymappedfile
le flux d'entrée n'est pas un format binaire valide. Le contenu de départ (en octets) est: 45-53-49-4D-20-00-31-30-30-00-00-42-4C-43-30-31-00 ...
Code CFile dans MFC:
char TempCharData[25];
TempInfo = Temp->GetTagName(); //Tag Name
memset(TempCharData,0,25);
strncpy(TempCharData,(const char *)TempInfo,TempInfo.GetLength());
ofTag.Write(TempCharData,(int)TagNameLength);
TempInfo = Temp->GetDescription(); // Description
memset(TempCharData,0,25);
strncpy(TempCharData,(const char *)TempInfo,TempInfo.GetLength());
ofTag.Write(TempCharData,24);
Im lecture de ce fichier dans C# comme ci-dessous:
MemoryMappedFile mmf1 = MemoryMappedFile.CreateFromFile("C:\\BL001\\YCS\\Tag.YCS", FileMode.Open);
MemoryMappedViewAccessor mmfReader = mmf1.CreateViewAccessor();
byte[] buffer = new byte[mmfReader.Capacity];
mmfReader.ReadArray<byte>(0, buffer, 0, buffer.Length);
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream memoryStream = new MemoryStream(buffer);
return binaryFormatter.Deserialize(memoryStream); //Shows error here
Cela ne peut jamais travailler, BinaryFormatter.Deserialize() ne peut jamais désérialiser un objet qui a été écrit par sa méthode Serialize(). Pas le cas ici bien sûr, MFC connaît des beans sur BinaryFormatter. Vous devrez utiliser BinaryReader. –