解决方案 »

  1.   


            [DllImport("WangYuPos.dll", EntryPoint = "GetConfigByPos")]
            extern static int GetConfigByPos(StringBuilder szErrorMsg, string szServerIP, string szOperatorID, string szPSWD, ref WANG_YU_POS__ITEM_INFO pMemberLevels, ref int pnMemberLevelsCount, bool bIsWithCon);        public struct WANG_YU_POS__ITEM_INFO
            {
                public int nID;                //    编号
                public byte[] szName;       //    编号名称        
            }
      

  2.   

    结构体定义的不合适    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
        public struct WANG_YU_POS__ITEM_INFO
        {
            public int nID;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 51)]
            public string szName;
        }
    char* 如果需要传数据出来,选择stringbuilder,stringbuilder需要定义长度进行初始化, 否则选string。
    如果基本类型参数需要返回值,加上refDllImport的参数最好都显示说明
    例如 [DllImport("WangYuPos.dll", EntryPoint = "GetConfigByPos", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
           extern static int GetConfigByPos(StringBuilder szErrorMsg, string szServerIP, string szOperatorID, string szPSWD, [Out] WANG_YU_POS__ITEM_INFO[] pMemberLevels, ref int pnMemberLevelsCount, bool bIsWithCon);