c++转换为c#语言错误。请大家看看。

chenjianyong94 2012-03-22 01:00:49
请大家看看我转换的对不对,c++开发人员说转换有错。

typedef struct _sockaddr_my
{
short sin_family; //地址家族,AF_xxx
u_short sin_port; //端口号
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; //IP地址
char sin_zero[8];
}sockaddr_my;
typedef struct NewDHCP_Info
{
char hostmac[20];
sockaddr_my ipchange;
sockaddr_my submaskaddr;
sockaddr_my gatewayaddr;
sockaddr_my dnsaddr;
sockaddr_my dhcpaddr;
char domainame[128];
int Flag;
int messagetype;
unsigned char Devtype;
char strSN[256];
char strDescriptName[256];
char UserName[256];
char Password[256];
unsigned char cDhcpAble;
unsigned char sub_device_type;
}NEWDHCP_INFO;
typedef void (*fDeviceInfoCallBack)(NEWDHCP_INFO* dhcp_info);
ALKSDK_API int SetDeviceInfoCallBack(fDeviceInfoCallBack fun);


public struct sockaddr_my
{
public Int16 sin_family;
public UInt16 sin_port;
public class S_un_b
{
public UInt16 s_b1, s_b2, s_b3, s_b4;
}
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 8)]
public string sin_zero;
}

[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class NewDHCP_Info
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strhostmac;

public sockaddr_my ipchange;
public sockaddr_my submaskaddr;
public sockaddr_my gatewayaddr;
public sockaddr_my dnsaddr;
public sockaddr_my dhcpaddr;

[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string domainame;

public int Flag;
public int messagetype;
public byte Devtype;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strSN;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strDescriptName;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strUserName;
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strPassword;
public byte cDhcpAble;
public byte sub_device_type;
}
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chinajiyong 的回复:]

引用 3 楼 chenjianyong94 的回复:

除了长度不对,还有其他问题吗???

我觉得像char strSN[256]这种是转换成byte数组把
[/Quote]
我错了,应该是这种
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
public string strPassword; 长度改改就行了
EnForGrass 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenjianyong94 的回复:]

除了长度不对,还有其他问题吗???
[/Quote]
我觉得像char strSN[256]这种是转换成byte数组把
chenjianyong94 2012-03-22
  • 打赏
  • 举报
回复
除了长度不对,还有其他问题吗???
bdmh 2012-03-22
  • 打赏
  • 举报
回复
你长度都不对应,人家256,你这32,啥呀
烟波钓 2012-03-22
  • 打赏
  • 举报
回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧