日期:2014-05-17  浏览次数:20881 次

求教一个C#引用C++DIl 做接口的问题,高手请进
先来短代码
WORD __stdcall LMMTP_WrapMessageProperty(DWORD SerialID, WORD UserID, PLMMTP_MESSAGE_PROPERTY_DATA pMsgProperty,
BYTE ValidTimeCount,PLMMTP_VALIDTIME_DATA pValidTimes, 
BYTE RegionCount, PLMMTP_REGION_DATA pRegions, BYTE *pDest);

这是C++中的函数定义
其中几个常字符串类型的变量都是结构类型,例如PLMMTP_MESSAGE_PROPERTY_DATA,那么我在C#中该如何声明该接口呢。
我是这样写的
        //WORD __stdcall LMMTP_WrapMessageProperty(DWORD SerialID, WORD UserID, PLMMTP_MESSAGE_PROPERTY_DATA pMsgProperty,BYTE ValidTimeCount,PLMMTP_VALIDTIME_DATA pValidTimes, BYTE RegionCount, PLMMTP_REGION_DATA pRegions, BYTE *pDest);
        [DllImport("LMMTPLib.DLL", EntryPoint = "LMMTP_WrapMessageProperty")]
        public static extern ushort LMMTP_WrapMessageProperty(uint SerialID, ushort UserID, PLMMTP_MESSAGE_PROPERTY_DATA pMsgProperty, byte ValidTimeCount, PLMMTP_VALIDTIME_DATA pValidTimes, byte RegionCount, PLMMTP_REGION_DATA pRegions, byte[] pDest);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="SerialID"></param>
        /// <param name="UserID"></param>
        /// <param name="pMsgProperty"></param>
        /// <param name="ValidTimeCount"></param>
        /// <param name="pValidTimes"></param>
        /// <param name="RegionCount"></param>
        /// <param name="pRegions"></param>
        /// <param name="pDest"></param>
        /// <returns></returns>
        public static int WrapMessageProperty(uint SerialID, ushort UserID, PLMMTP_MESSAGE_PROPERTY_DATA pMsgProperty, byte ValidTimeCount, PLMMTP_VALIDTIME_DATA pValidTimes, byte RegionCount, PLMMTP_REGION_DATA pRegions,ref byte[] pDest)
        {