本帖最后由 qiuzhuoxian 于 2009-10-16 16:33:52 编辑

解决方案 »

  1.   

    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
                public string szDesc;  
      

  2.   

    我现在已经都改成string了,而且也改成了[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] 可是还是一样的
    数据库里还是没有东西
    怎么回事啊
    快点来帮忙呀
      

  3.   

    public int WriteLog(char * id,LOG * plog); 
    最后一参数要求指针,可以考虑用 marshal.StructureToPtr   转化一下
      

  4.   


    [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
            public struct STLOGINFO
            {
                public byte byLogType;            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
                public string szDesc;
            }        [DllImport("CppDll.dll", EntryPoint = "WriteLog", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern int WriteLog(string Id, ref STLOGINFO pstLogInfo);
    STLOGINFO log = new STLOGINFO();
                log.byLogType = 12;
                log.szDesc = "hello,abcde";
                WriteLog("12345", ref log);