我有个对方给的DLL接口文件,文件名是INTR.DLL
函数是: int CC(int ID,
              char* CODE1,
              char* CODE2); safecall;
对方给出的文档中说明CODE2是双向参数,既是入参也是出参我是这样调用的
[DllImport("INTR.DLL", EntryPoint = "CC", CharSet = CharSet.Ansi)]public static extern int CC(int ID, Char[] CODE1, Char[] CODE2);
char[] CODE1= "....".ToArray();
char[] CODE2= "....".ToArray();
textBox1.Text = RTPC(101, CODE1, CODE2).ToString();
我入参现在很正常,返回的函数结果是对方给出的成功提示,但如何获取对方返回的CODE2里的值呢?我现在用
textBox1.Text = RTPC(101, CODE1, CODE2).ToString();只能获取到对方返回的0(成功)提示

解决方案 »

  1.   

    必须这样定义
    [DllImport("INTR.DLL", EntryPoint = "CC", CharSet = CharSet.Ansi)]
    public static extern int CC(int ID, ref byte CODE1, ref byte CODE2);传递时还是声明数组,例如byte[] code2 = ...,传递ref code2[0]
      

  2.   

    直接用string就可以,在前面打个[MarshalAs(UnmanagedType.LPStr)],需要传入的打个[In],需要传出的打个[Out]
      

  3.   

    以前没做过这样的接口,有点陌生,还请大家多多指教,
    文档中函数属性是
    int CC(int ID,
       char* CODE1,
       char* CODE2); safecall;
    是不是我在C#中必须写成
    [DllImport("INTR.DLL", EntryPoint = "CC", CharSet = CharSet.Ansi)]
    public static extern int CC(int ID, ref byte CODE1, ref byte CODE2);把char*转换成byte ,不能用char[]?另外能给个实例么?
    如现在我准备往CC函数里传 ID=1,CODE1="1,2,3,4",CODE2=""
    我如何在textBox1中显示CC函数的值和在textBox2中显示CODE2的值?万分感谢