关于C#调用C++DLL中函数的有关问题
关于C#调用C++DLL中函数的问题
C++的函数声明如下:
我在C#下是这样用的:
返回的代码始终是函数执行的错误代码,意思是输入的参数不正确,怎么回事呢?
------解决思路----------------------
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();
这样就可以了。
------解决思路----------------------
如果我是你 我肯定会重写 点一下 然后 发现 是 GetBytes - -!。。。。
直接手打的代码 写少了一个S很正常。。
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();
这样就可以了。
------解决思路----------------------
如果我是你 我肯定会重写 点一下 然后 发现 是 GetBytes - -!。。。。
直接手打的代码 写少了一个S很正常。。