亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++中的union結構體怎么轉換成C#?

C++中的union結構體怎么轉換成C#?

C++
陪伴而非守候 2019-03-22 19:14:52
C++中的union結構體怎么轉換成C#? 
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊


1

2

3

4

5

6

7

8

9

10

11

12

 [StructLayout(LayoutKind.Explicit, Size=2)]

struct TokenValue

{

[FieldOffset(0)]

[MarshalAs(UnmanagedType.U1)]

public byte _cval;

[FieldOffset(1)]

[MarshalAs(UnmanagedType.U1)]

 public byte _ival;

[FieldOffset(0)]

public ushort flags;

}



查看完整回答
反對 回復 2019-03-27
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

        public struct dash_generic_param
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
            public short[] raw_data;
        }
        //public struct dash_generic_param
        //{
        //    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
        //    public ushort[] values;
        //    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]
        //    public ushort[] reserved;
        //    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        //    public ushort[] limit;
        //}
        // 結構體按你需求,2選1
        public struct DashParamPacket {	
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 34)]
            public ushort[] raw_data;
        }
        //public struct DashParamPacket {	
        //     public ushort pre_id;
        //     public byte token;
        //     public byte r1;
        //     public dash_generic_param data;
        //     public byte major_id;
        //     public byte minor_id;
        //     public ushort r2;
        //}

        // 例如c++庫里接口名為GetPacket,DashParamPacket是c#定義的與C++中內存對齊的結構體
        [DllImport("xxx.dll")]
        public static extern bool GetPacket(ref DashParamPacket parm);

        static void Main(string[] args)
        {
            DashParamPacket param = new DashParamPacket(); // C#里的結構體
            GetPacket(ref param); // 如果C++接口定義的結構體指針,可以直接用引用

            // 如果需要轉void*使用,可以用marhal庫來回轉
            IntPtr p = In


查看完整回答
反對 回復 2019-03-27
  • 2 回答
  • 0 關注
  • 807 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號