c#调用DLL文件发生错误!!应用程序发生错误,未知的软件异常[DllImport("idcarddll.dll", EntryPoint = "RecogNewIdcardALL ",
                CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern int RecogNewIdcardALL(string imgfile_name, ref IDCARD idcard, bool bSaveResultFile, int nContent, string HeadImgFName);结构体
 public struct IDCARD
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7)] 
            public string name; //姓名
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
            public string sex;  //性别
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
            public string people;  //民族,
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
            public string birthday; //出生日期
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
            public string address; //地址,
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
            public string signdate; //签发日期,
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
            public string validterm;  //有效期,
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
            public string number; //证件编码,
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
            public string other; //备用,
        };

解决方案 »

  1.   

    信息太少,基本看不出什么问题
    建议先将动态连接库的调用放到一个没有任何逻辑代码的程序中去测试,确保dll文件的位置,函数入口点,调用规则等都填写正确,这样可以避免复杂环境的影响,一般用控制台程序几行代码就可以搞定
      

  2.   

    自己搞个try-catch块,联调一下不行?版上人又不是神仙,一下就看出你的问题来了?
      

  3.   

    得该处详细异常信息,和dll端的函数声明。