delphi中有一个加密校验的CRC.dll,想在c#中调用它,老是报试图加载格式不正确的程序
 [DllImport("DES.dll", CallingConvention = CallingConvention.StdCall)]
         public static extern  int DecFile(string s1, string s2, string s3);  其中s1,s2,s3分别为源文件路径全名,目的文件路径全名和密钥.是不是参数s1的路径在delphi中是带"/"的而c#是带"//"传入的?
各位有碰过这样的问题的吗?  请教!! 

解决方案 »

  1.   

    delphi的dll如果用了string类型那么c#是不能调用的,用了string类型的dll只供delphi调用,除非delphi里面用的是pchar,那么在c#里面可以把类型转换了来调用。
      

  2.   

    关键看delphi接口怎么声明的!
      

  3.   

    恩  谢谢大家
    后来我改为
     [DllImport("DES.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "EncFile", CharSet = CharSet.Auto)]
    public static extern  int DecFile(string s1, string s2, string s3);
    这次不报错,  但结果是什么后没有,中断进去后发现返回-1. 而说明中只有返回0,1,1失败,0成功.接口的定义为 
    定义:Function EncFile(sSrcFileName, sDestFileName, sKeyFileName : String):Integer; stdcall;
        功能:对带有CRC码的明文文件加密,成功则输出密文文件,否则返回 1,
    注意:明文文件名称与密文文件名称应不相同。
        输入:sSrcFileName         明文文件名称(全路径)
          sDestFileName        密文文件名称(全路径)
          sKeyFileName     密钥文件名称(全路径)
    输出:0    加密成功    
          1    加密失败是参数格式问题吗?  
      

  4.   

    接口我也不清楚是不是delphi写的,但在我同事的delphi程序中使用的很好.
      

  5.   

    DELPHI 里面的开发的参数,需要PChar类型不是String,楼上已经有人回答了
      

  6.   

    给你个方法:自己写个DLL,然后引用用的DES.dll,调用里面的函数,自己写的这个DLL中可以用下面的形式:
    Function EncFile(sSrcFileName, sDestFileName, sKeyFileName :pchar):Integer
    begin
    result:=加密函数();
    end;