Delphi写的DLL接口:
procedure Zip(Input,Output:TStream;Compress:Boolean);stdcall;export;C#
[DllImport("zlib.dll", EntryPoint = "Zip", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern void Zip(Stream input, Stream output, bool isCompress);出错提示:引发类型为“System.ExecutionEngineException”的异常。

解决方案 »

  1.   

    因为现有delphi下ZLib.pas生成的压缩数据提交到.net服务器后,需要由c#来解压,打算用c#把接收到的数据直接传送给delphi开发的dll动态库来处理.
      

  2.   

    你那个Zlib的核心是不是网上常用的Zlib解压压缩库?
      

  3.   

    你试试将解压部分封装到DLL中,将其做策划那个一个带有返回值的函数,在C#中调用这个有返回值的函数,个人意见。
      

  4.   

    delphi自带有ZLib.pas,在uses 加入ZLib即可
      

  5.   

    C#下有现成的SharpZipLib  开源的
      

  6.   

    你所说的这个开源的,能解压delphi下ZLib.pas生成的压缩数据吗?
    因为我的客户端使用的是Delphi的程序,服务器端使用的是c#的
      

  7.   

    好像说是SharpZipLib不支持ZLib格式,你看看这个Zlib.net能不能支持Delphi下的ZLib
    http://www.componentace.com/zlib_.NET.htm
      

  8.   

    Stream不能这么传递吧
    TStream和C#的Stream完全不是一回事啊
      

  9.   


    哦,我用c#中的byte[] 传送到 delphi中的array of byte 不知道该怎么去实现.
      

  10.   

    Delphi:
    ---------------------
    uses
      ZLib,Windows,
      Classes;
    type
      TByteArray   =   array of byte;  function UnZip(buf : array of byte) : TByteArray ;stdcall;export;implementation
    c#:
    ---------------
            [DllImport("Zlib.dll", SetLastError = true, ThrowOnUnmappableChar = true)]
            public static extern byte[] UnZip(byte[] input);
      

  11.   

    往delphi我不清楚  没用过
    C的话定义成 BYTE**
      

  12.   

    Delphi的TStream和c#的根本不是一回事
      

  13.   


    不是,是我用Delphi的ZLib.pas库编写的一个Zlib.DLL文件,不是网上下载的.
      

  14.   

    那我应该使用何种数据类型才能把 c#中的"流"传送到delphi开发的Dll中呢?
      

  15.   

    用基本类型,比如delphi里先转换成字节数组再传,c#接受字节数组后再转换成tstram
      

  16.   

    说颠倒了,总是是这个意思,和tcp/ip通讯的时候用byte[]一样