vc++传结构体到C#中,为啥C#中的值 老是一样的!!
vc+++struct Point
{
int x,y;
int _x,_y;
int width,height;
int frameSum;
float length;
char pictureName[50];
bool Success;
int order;
float area;
int X,Y;
} ;
C#
[StructLayout(LayoutKind.Sequential)]
public struct Point
{
int star_x,star_y;
int end_x,end_y;
int width,height;
int frameSum;
float length;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)] // 声明一个字符数组,大小为50
char[] pictureName;
bool Success;
int order;
float area;
int X,Y;
};
VC++
char recvstr[sizeof(Point)];
memcpy(recvstr,&defectpoint,sizeof(Point));
send(sockClient,recvstr,sizeof(Point),0);
C#
buffer = new byte[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)] // 声明一个字节数组,大小为50
byte[] pictureName;
或者
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] // 声明一个字符串,大小为50
string pictureName;
C++的char一个字节,等于C#的byte,C#的char两个字节,因此你就不能那么定义。
--------------------编程问答--------------------
嗯 刚才查了下C#中char是2位 我改成byte试试 谢谢 --------------------编程问答-------------------- 你有QQ吗 我加一下 我还有问题想请教
就是 传过来的值总是第一次传的那些值
--------------------编程问答-------------------- 你把传值调用的代码贴出来啊。
补充:.NET技术 , C#