求助,使用C#声明一个C++带构造函数和位含义的结构体

chrno930 2016-02-24 04:46:53
救急,有一个C++的结构体,需要我用C#声明出来,我没有多少分,求帮忙

typedef struct XCtrlStatus
{
XCtrlStatus(unsigned long V = 0)
{*reinterpret_cast<unsigned long*>(this) = V;}
unsigned char ERR : 1;
unsigned char AUTO : 1;
unsigned char RUN : 2;
unsigned char DIR : 2;
unsigned char : 1;
unsigned char : 1;
unsigned char CTRL : 8;
unsigned char : 8;
unsigned char : 8;
operator unsigned long () const
{return *reinterpret_cast<const unsigned long*>(this);}
}XCtrlStatus;
...全文
221 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chrno930 2016-02-25
  • 打赏
  • 举报
回复
引用 5 楼 shingoscar 的回复:
[quote=引用 4 楼 chrno930 的回复:] [quote=引用 3 楼 shingoscar 的回复:] 不就是个int嘛 你这是既不懂c#也不懂c++呀
求助,我是不太懂,主要是这个结构体是一个C++的dll方法中的,我需要在C#中DllImport这个dll,就需要把这个结构体声明出来,请问怎么做?[/quote] 用int就行,至于每一位上的值,位运算会吧? 注意下大小端就行,x86都是小端 [/quote] 明白你的意思了,昨天晚上也想了一下,应该是我不一定需要保持C#声明类型与C++dll形式上的一致,只要能保证内存大小和内容上的一致就可以使用了是吧,我先试试
Poopaye 2016-02-24
  • 打赏
  • 举报
回复
引用 4 楼 chrno930 的回复:
[quote=引用 3 楼 shingoscar 的回复:] 不就是个int嘛 你这是既不懂c#也不懂c++呀
求助,我是不太懂,主要是这个结构体是一个C++的dll方法中的,我需要在C#中DllImport这个dll,就需要把这个结构体声明出来,请问怎么做?[/quote] 用int就行,至于每一位上的值,位运算会吧? 注意下大小端就行,x86都是小端
chrno930 2016-02-24
  • 打赏
  • 举报
回复
引用 3 楼 shingoscar 的回复:
不就是个int嘛 你这是既不懂c#也不懂c++呀
求助,我是不太懂,主要是这个结构体是一个C++的dll方法中的,我需要在C#中DllImport这个dll,就需要把这个结构体声明出来,请问怎么做?
Poopaye 2016-02-24
  • 打赏
  • 举报
回复
不就是个int嘛 你这是既不懂c#也不懂c++呀
chrno930 2016-02-24
  • 打赏
  • 举报
回复
感谢版主回帖,看了链接的内容,但是好像对我目前的问题没有帮助,我卡在这个结构体中使用了reinterpret_cast将构造方法参数V的值强制赋值给了结构体本身的内存,结构体被当做了一个ulong,然后在其中表明了各个bit的含义,但是我怎么在C#中的结构体中来实现这个强制转换呢?????求助

110,568

社区成员

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

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

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