关于C#调用C++DLL中函数的有关问题

关于C#调用C++DLL中函数的问题
C++的函数声明如下:

*函数名称 : IdentityAuthentication
*功能   : 身份认证
*参数输出 : OutRand 随机数  
OutEndata 随机数密文
*参数输入 : Flag 密钥标识 0: 测试密钥状态;1: 正式密钥状态
pDiv 分散因子  
*函数返回值 : *函数返回值 : 0 成功  其他 失败  
*------------------------------------------------------*/
int WINAPI IdentityAuthentication(int Flag, char *PutDiv,char *OutRand,char* OutEndata);
/*-------------------------------------------------------


我在C#下是这样用的:

        [DllImport("XX.dll")]
        internal static extern int IdentityAuthentication(int Flag, string PutDiv, ref string OutRand, ref string OutEndata);

        private void button2_Click(object sender, EventArgs e)
        {
                string OutRand = "" ; string OutEndata = "";
                string PutDiv = "000006701924";
                int i= IdentityAuthentication(0,  PutDiv, ref OutRand, ref OutEndata);
                if (i != 0)
                {
                    MessageBox.Show(i.ToString());
                }
        }


返回的代码始终是函数执行的错误代码,意思是输入的参数不正确,怎么回事呢?
------解决思路----------------------
 internal static extern int IdentityAuthentication(int Flag, string PutDiv, stringbuilder OutRand, stringbuilder OutEndata);
------解决思路----------------------
 internal static extern int IdentityAuthentication(int Flag, string PutDiv, StringBuilder OutRand, StringBuilder OutEndata);
------解决思路----------------------
StringBuider OutRand=new StringBuider ();
StringBuider OutEndata=new StringBuider();

 int i= IdentityAuthentication(0,  PutDiv, OutRand, OutEndata);

string xxx=OutRand.ToString();
string yyyy=OutEndata.ToString();

这样就可以了。
------解决思路----------------------
引用:
Quote: 引用:


internal static extern int IdentityAuthentication(int Flag, byte[] PutDiv, byte[] OutRand, byte[] OutEndata);
PutDiv = Encoding.ASCII.GetByte("0000095034950340509234582390");
byte[] OutRand = new byte[这里要多长 我也不知道]
...
int i= IdentityAuthentication(0,  PutDiv, OutRand, OutEndata);


Encoding.ASCII.GetByte的GetByte报没有定义该方法

如果我是你 我肯定会重写 点一下 然后 发现 是 GetBytes - -!。。。。
直接手打的代码 写少了一个S很正常。。