[基础] C++ 结构体和C#相互转换的问题

NoZ 2004-11-21 11:47:43
vc用定义的结构体C#如何转换使用?

几个方面用到: 1 网络传输 2 二进制文件读写 3 dll调用

1 字节对齐问题 vc 中用pragma pack(1),C#如何制定字节对齐?
这个已经找到答案, 应该是加属性 [StructLayout(LayoutKind.Sequential,Pack=1)]
2 数组问题 vc定义的字符数组如何转换?

比如 vc定义的
#pragma pack(1)
struct Packet
{
char Name[20];
bool Sex;
char Description[12];
Unsigned short Age;
}
#pragma pack()

转换到C#的结构应该怎么写啊?
...全文
332 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
windinwing 2004-11-22
  • 打赏
  • 举报
回复
struct Packet
{
char Name[20];
bool Sex;
char Description[12];
Unsigned short Age;
}
struct Packet
{
byte Name[20];

//VC里 char 占4位,C#里char占8位,byte点用4位
//VC里char 等于C#里的byte
bool Sex;
//不变
byte Description[12];
ushort Age;
//C#里的ushort是16位就是System.UInt32,但是C++里是8位,找不到更短的啦,除非自已写一个:)
}
dll 中指针参数可以用委托,事件,等代替
NoZ 2004-11-21
  • 打赏
  • 举报
回复
dll 中指针参数 怎么转换使用啊?
比如
struct s
{
char * a;
}

void * b (s *c, char *d) 的函数 Export出来后 C#如何调用??
NoZ 2004-11-21
  • 打赏
  • 举报
回复
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=20 )]

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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