如题,用delphi弄了一个加解密算法dll,准备在c#中调用,此dll用delphi测试调用成功,但c#调用报错,请各位各人出招,先行谢过~~Delphi函数定义: function Get_Encrypt(const Code:AnsiString; const License:AnsiString):AnsiString;stdcall; 
function Get_Decrypt(const Code:AnsiString; const License:AnsiString):AnsiString;stdcall; function Get_Encrypt(const Code:AnsiString; const License:AnsiString):AnsiString; 
var   
  v,k:TLongWordDynArray; 
begin   
  if (Length(Code) = 0) then exit; 
  v := StrToArray(Code, true);    
  k := StrToArray(License, false);    
  result := ArrayToStr(XXTeaEncrypt(v, k), false);    
end;    
   
function Get_Decrypt(const Code:AnsiString; const License:AnsiString):AnsiString; 
var   
  v,k:TLongWordDynArray; 
begin   
  if (Length(Code) = 0) then exit; 
  v := StrToArray(Code, false);    
  k := StrToArray(License, false);    
  result := ArrayToStr(XXTeaDecrypt(v, k), true);    
end;  C#调用: 
    [DllImport("Interface.dll", CharSet=CharSet.Auto)] 
    public static extern string Get_Decrypt(string Code, string License); 
    [DllImport("Interface.dll", CharSet=CharSet.Auto)] 
    public static extern string Get_Encrypt(string Code, string License); 此调用不成功,google查资料确认"delphi的dll如果用了string类型那么c#是不能调用的,用了string类型的dll只供delphi调用,除非delphi里面用的是pchar,那么在c#里面可以把类型转换了来调用。"  请各位大侠帮忙看看,可有什么处理的方法? 或者,哪位能提供一个可供c#调用的delphi加解密算法dll(DES,XXTEA等均可)?

解决方案 »

  1.   

    参数和返回类型都使用PCHAR类型就OK了
      

  2.   

    to touchboy: 上面的代码直接把ansistring改成pchar就行了么?那C#调用的地方是否要修改?
      

  3.   

    C#中的编码要改成ansistring的。默认的是unicode编码字符串。
      

  4.   

    CharSet=CharSet.Auto不对,指定为ansicode字符串,具体我忘记了。查msdn里有。
      

  5.   

    还是不行~~哎各位有没有des,xxtea之类的delphi,c++,c之类的dll?可供c#调用的?delphi类型和c#类型整了三天了,还是没搞定,急~
      

  6.   

    各位有现成的供c#调用的dll和源码么