日期:2014-05-17  浏览次数:20971 次

求教一个DLL接口问题
我有个对方给的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(成功)提示

------解决方案--------------------
必须这样定义
C# code
[DllImport("INTR.DLL", EntryPoint = "CC", CharSet = CharSet.Ansi)]
public static extern int CC(int ID, ref byte CODE1, ref byte CODE2);

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