axFK542PET1.SetEnrollData(mMachineNumber, Convert.ToInt32(dr["no"]), mMachineNumber, 0, Convert.ToInt32(dr["qx"]), ref oo, 0);//ref 为一个object对象  //这一句出错,可能是这个ref oo,调用的人家一个ocx控件,

解决方案 »

  1.   

    axFK542PET1.SetEnrollData 这个方法要求oo是什么类型
      

  2.   

    axFK542PET1.getEnrollData 用这个导出来的是int32
    导入用axFK542PET1.SetEnrollData 也是一个ref object
    我用了string int,int32 这三种类型都不得行
      

  3.   

    getEnrollData 方法定义里面有参数类型
      

  4.   

    axFK542PET1.getEnrollData 这里面也是一个ref ojbect,最后猜出来是int32[]
     BOOL GetEnrollData( Long  dwMachineNumber ,
    Long  dwEnrollNumber ,
    Long  dwEMachineNumber ,
    Long  dwBackupNumber ,
    Long FAR* dwMachinePrivilege ,
    Long FAR* dwEnrollData ,
    Long FAR*  dwPassWord );现在我还原回去用SetEnrollData用int32[]就不行了
    BOOL SetEnrollData ( Long  dwMachineNumber ,
    Long  dwEnrollNumber ,
    Long  dwEMachineNumber ,
    Long  dwBackupNumber ,
    Long          dwMachinePrivilege ,
    Long FAR* dwEnrollData ,
    Long    dwPassWord );
      

  5.   

    是啊,C#我在網上查不到此資料COMException (0x80020005): 类型不匹配我想是C#的自身的問題,vb用long數組就可以
      

  6.   

    object var = new System.Runtime.InteropServices.VariantWrapper(arr2);
    自己动手搞定加上这句就可以了
    针对Variant c#须new System.Runtime.InteropServices.VariantWrapper