夥伴解說:c++
1 //GPS數據結構體 wfy on 20150417 2 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] 3 public struct BVCU_PUCFG_GPSData 4 { 5 public BVCU_WallTime stTime; 6 public Int32 iLongitude; 7 public Int32 iLatitude; 8 public Int32 iHeight; 9 public Int32 iAngle; 10 public Int32 iSpeed; 11 public Int32 iStarCount; 12 public Int32 bAntennaState; 13 public Int32 bOrientationState; 14 public int iSatelliteSignal; 15 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] 16 Int32[] iReserved; 17 }
如下就是把結構體封裝成Ptr引用:git
1 BVCU_PUCFG_GPSData gpsData; 2 IntPtr pt = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(BVCU_PUCFG_GPSData))); 3 Marshal.StructureToPtr(gpsData, pt, true);
這裏還涉及到由託管內存到非託管內存的轉移。c#爲託管,c++爲非託管。c#