i ont une structure avec une longueur dynamique:C# marshaling chaîne de longueur dynamique
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct PktAck
{
public Int32 code;
[MarshalAs(UnmanagedType.LPStr)]
public string text;
}
quand je suis convertir octets [] struct par ce code:
GCHandle handle = GCHandle.Alloc(bytes_array, GCHandleType.Pinned);
result_struct = (PktAck)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(PktAck));
handle.Free();
j'ai une erreur, parce que la taille de la structure est inférieure à la taille des octets [] et le "texte de la chaîne" est le pointeur sur la chaîne ...
Comment puis-je utiliser les chaînes dynamiques? ou je peux utiliser seulement quelque chose comme ceci:
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1000)]
màj: c struct
struct PktAck
{
int code;
char* text;
}
Veuillez nous montrer le C 'struct'. – SLaks
Salut, J'ai le même problème. Avez-vous obtenu la solution? Merci, Ofir – Ofir