none
c#与vc的dll交互 RRS feed

  • 问题

  • 大家好,本人是新人,先膜拜一下坛子里的大牛们....
    下面问题来了,呵呵
    一个vc写的dll,我用c#函数包装了一下然后调用,
    测试的时候c/s使用没问题,但是b/s下面就直接报堆栈溢出(System.StackOverflowException),gg baidu了很多资料都没找到原因,希望坛子里的师兄师姐们帮忙看一看
    下面贴下主要的代码

    vc函数原形
    SMART_API   long      CHC_Identify( HANDLE pIdentifyObj , CIPImage* pStd , IdentifyRS rs[] , int rsSize );

    c#引用
    [DllImport( "SmartCombin.dll" , EntryPoint = "CHC_Identify" )]
    public static unsafe extern Int32 CHC_Identify( IntPtr pIdentifyObj , CIPImage* pStd , [InAttribute , OutAttribute] IdentifyRS[] rs , Int32 rsSize );

    使用函数
    int count = CHC_Identify( m_IdentifyObj , pStdImage , rs , 20 );//这里b/s下面堆栈溢出,但是c/s没问题.
    2009年6月23日 1:43

答案

全部回复

  • public static unsafe extern     估计是多线程调用 挂了


    [DllImport(  )]
    声明的函数  可以不是static  的  直接作为类的普通成员函数存在的    您把  static 去掉试验下

    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月23日 2:15
    版主
  • public static unsafe extern     估计是多线程调用 挂了


    [DllImport(  )]
    声明的函数  可以不是static  的  直接作为类的普通成员函数存在的    您把  static 去掉试验下

    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花

    韦恩卑鄙 您好!
         你的意思是vc中CHC_Identify函数使用多线程导致程序异常?
         另外,'声明的函数   可以不是static  的  直接作为类的普通成员函数存在的    您把  static 去掉试验下‘
         直接作为类的普通成员函数存在?改成下面这样?
    [DllImport( "SmartCombin.dll" , EntryPoint = "CHC_Identify" )]
    public unsafe extern Int32 CHC_Identify( IntPtr pIdentifyObj , CIPImage* pStd , [InAttribute , OutAttribute] IdentifyRS[] rs , Int32 rsSize );
         貌视这样不行的.........
    2009年6月23日 2:59
  • 自己搞定了
    是vc函数有个地方有问题........
    2009年6月23日 5:41