问题描述
vc+++structPoint{intx,y;int_x,_y;intwidth,height;intframeSum;floatlength;charpictureName[50];boolSuccess;intorder;floatarea;intX,Y;};C#[StructLayout(LayoutKind.Sequential)]publicstructPoint{intstar_x,star_y;intend_x,end_y;intwidth,height;intframeSum;floatlength;[MarshalAs(UnmanagedType.ByValArray,SizeConst=50)]//声明一个字符数组,大小为50char[]pictureName;boolSuccess;intorder;floatarea;intX,Y;};VC++charrecvstr[sizeof(Point)];memcpy(recvstr,&defectpoint,sizeof(Point));send(sockClient,recvstr,sizeof(Point),0);C#buffer=newbyte[1024];ns.Read(buffer,0,buffer.Length);Pointdefepoint=(Point)BytesToStruct(buffer,typeof(Point));帮帮忙在线等啊。
解决方案
解决方案二:
http://topic.csdn.net/u/20120528/17/8fc50d63-d913-4187-9354-da7310ec8efa.html回复下!!!!!!!!!!
解决方案三:
[MarshalAs(UnmanagedType.ByValArray,SizeConst=50)]//声明一个字节数组,大小为50byte[]pictureName;或者[MarshalAs(UnmanagedType.ByValTStr,SizeConst=50)]//声明一个字符串,大小为50stringpictureName;C++的char一个字节,等于C#的byte,C#的char两个字节,因此你就不能那么定义。
解决方案四:
引用2楼的回复:
[MarshalAs(UnmanagedType.ByValArray,SizeConst=50)]//声明一个字节数组,大小为50byte[]pictureName;或者[MarshalAs(UnmanagedType.ByValTStr,SizeConst=50)]//声明一个字符串,大小为50stringpictureName;C++的c……
嗯刚才查了下C#中char是2位我改成byte试试谢谢
解决方案五:
你有QQ吗 我加一下 我还有问题想请教就是 传过来的值总是第一次传的那些值
解决方案六:
你把传值调用的代码贴出来啊。