【问题标题】:Mono & DeflateStream单声道和放气流
【发布时间】:2023-04-02 08:02:01
【问题描述】:

我有一个简单的代码

byte[] buffer = Encoding.UTF8.GetBytes("abracadabra");
MemoryStream ms = new MemoryStream();
DeflateStream ds = new DeflateStream(ms, CompressionMode.Compress, false);
ms.Write(buffer, 0, buffer.Length);

DeflateStream ds2 = new DeflateStream(ms, CompressionMode.Decompress, false);
byte[]  buffer2 = new byte[ms.Length];
ds2.Read(buffer2, 0, (int)ms.Length);
Console.WriteLine(Encoding.UTF8.GetString(buffer2));

从 ds2 读取时,我有以下内容:

堆栈跟踪:

at(包装器托管到本机) System.IO.Compression.DeflateStream.ReadZStream (intptr,intptr,int)

at(包装器托管到本机) System.IO.Compression.DeflateStream.ReadZStream (intptr,intptr,int)

在 System.IO.Compression.DeflateStream.ReadInternal (byte[],int,int) [0x00031] 在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System.IO.Compression\DeflateStream.cs:192

在 System.IO.Compression.DeflateStream.Read (byte[],int,int) [0x00086] 在 C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System.IO.Compression\DeflateStream.cs:214

在 testtesttest.MainClass.Main (字符串[])[0x00041]在 C:\Users\ilukyanov\Desktop\Cassini\GZipDemo\Main.cs:27

at(包装器运行时调用) .runtime_invoke_void_object (对象,intptr,intptr,intptr)

此应用程序已请求 运行时以异常终止它 方法。请联系应用程序的 支持团队了解更多信息。

这个问题出现在 Mono 2.6.1 & 2.6.3...

是否有任何已知的方法可以在 Mono 中成功读取 DeflateStream?或者也许有一些具有相同功能的第三方开源程序集?

【问题讨论】:

  • 重要说明:我的平台是Windows

标签: mono deflatestream


【解决方案1】:

您可以使用带有 DllImport 的 Interop 本地调用 zlib。
如果您在 Unix 平台上,唯一的技巧是在结构中使用正确的大小并将共享库包含在 LD_LIBRARY_PATH 中。

【讨论】:

  • 谢谢回复,不过我的平台是windows =(
【解决方案2】:

请提交一个针对 Mono 的错误。如果你这样做,它可能会在 2.6.4 及时得到修复。

【讨论】:

  • 它已经以低优先级存在 =( 顺便说一句,Novell 的实现 og GZipStream 是骗人的......它只是装饰 DeflateStream 并且没有添加任何功能......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2014-02-09
  • 1970-01-01
相关资源
最近更新 更多