C#(winform)调用一读卡的DLL接口函数声明如下
int Read_ICC(int *icctype,char *Issudate,char *Hangup,char *startdate,char *Enddate,char *Iccno,char *Infor1,char *Infor2,char *Infor3)C#中对应如下:
[DllImport("LOCK2000.dll",CharSet=CharSet.Ansi)]
static extern int Read_ICC(ref int icctype,[Out] StringBuilder   Issudate,[Out] StringBuilder   Hangup,[Out] StringBuilder   startdate,[Out] StringBuilder   Enddate,[Out] StringBuilder   Iccno,[Out] StringBuilder   Infor1,[Out] StringBuilder   Infor2,[Out] StringBuilder   Infor3);StringBuilder类型的能正确反回,现在就 int *icctype 对应的参数不能返回值,不知道应该写才能正确返回值.另:StringBuilder类型返回有时是乱码,有什么办法可以试试?

解决方案 »

  1.   

    你可以把你的方法声明为unsafe的,这样就可以使用指针了.
      

  2.   

    fencole(大因扎吉)大哥,能不能说详细点?
    给个示例吧
      

  3.   

    参数列表中ref int icctype只是副本传值呀!
    你可以把它定义成引用传值试试ref int& icctype
      

  4.   

    试试
    int Read_ICC(IntPtr icctype,string Issudate,string Hangup,string startdate,string   Enddate,string Iccno,string Infor1,string Infor2,string Infor3)
      

  5.   

    现在就 int *icctype 对应的参数不能返回值===============================================改成 IntPtr icctype
      

  6.   

    to StringBuilder类型的能正确反回,现在就 int *icctype 对应的参数不能返回值,不知道应该写才能正确返回值.参数本身是数组还是int指针?如果是后者的话,可以用ref int
    前者可以用int[]
      

  7.   

    to 另:StringBuilder类型返回有时是乱码,有什么办法可以试试?change
    [DllImport("LOCK2000.dll",CharSet=CharSet.Ansi)]with
    [DllImport("LOCK2000.dll")]