首页 > 解决方案 > 统一压缩字符串时出现 libMonoPosixHelper.dylib 问题

问题描述

我正在再次处理一个旧项目,该项目用于构建 Unity 2018.3 并能正常工作

我已经安装了 Unity 2019.3.0f3。

我可以毫无问题地构建(除非我在某处的日志中遗漏了什么?)。

我有以下功能:

public static string CompressString(string text)
        {
            try
            {
                if (text == null || text.Length == 0) return String.Empty;

                using (var memoryStream = new MemoryStream())
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(text);
                    using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
                    {
                        gZipStream.Write(buffer, 0, buffer.Length);
                    }

                    memoryStream.Position = 0;

                    var compressedData = new byte[memoryStream.Length];
                    memoryStream.Read(compressedData, 0, compressedData.Length);

                    var gZipBuffer = new byte[compressedData.Length + 4];
                    Buffer.BlockCopy(compressedData, 0, gZipBuffer, 4, compressedData.Length);
                    Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4);

                    return Convert.ToBase64String(gZipBuffer);
                }
            }
            catch (Exception erreur)
            {
                return text;
            }
        }

在 Windows 上运行良好。

当我在我的 Mac 上尝试时,出现以下异常:

CompressString : libMonoPosixHelper.dylib : : : at (wrapper managed-to-native) System.IO.Compression.DeflateStreamNative.CreateZStream(System.IO.Compression.CompressionMode,bool,System.IO.Compression.DeflateStreamNative/UnmanagedReadOrWrite,intptr) at System.IO.Compression.DeflateStreamNative.Create (System.IO.Stream compressedStream, System.IO.Compression.CompressionMode mode, System.Boolean gzip) [0x0004a] in :0 at System.IO.Compression.DeflateStream..ctor (System .IO.StreamcompressionStream, System.IO.Compression.CompressionMode 模式, System.Boolean leaveOpen, System.Boolean gzip) [0x0002d] in :0 at System.IO.Compression.DeflateStream..ctor (System.IO.Stream 流, System.IO.Compression.CompressionMode 模式,System.Boolean leaveOpen,System.Int32 windowsBits) [0x00000] 在:0 at (wrapper remoting-invoke-with-check) System.IO.Compression.DeflateStream..ctor(System.IO.Stream,System.IO.Compression.CompressionMode,bool,int) 在 System.IO.Compression.GZipStream。 .ctor(System.IO.Stream 流,System.IO.Compression.CompressionMode 模式,System.Boolean leaveOpen)[0x00006] in :0 at(wrapper remoting-invoke-with-check)System.IO.Compression.GZipStream.. <3ae6905998594b6a999ad880754f3bfd>:0 UnityEngine.DebugLogHandler:Internal_Log(LogType,LogOption , String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:LogError(Object) LibTRANSVERSE.Helper。监控:异常(异常,字符串)LibTRANSVERSE.Helper.String_Utils:CompressString(字符串)... System.Threading.ThreadHelper:ThreadStart_Context(Object)System.Threading.ExecutionContext:RunInternal(ExecutionContext,ContextCallback,对象,布尔)System.Threading .ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean) System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object) System.Threading.ThreadHelper:ThreadStart(Object) (文件名:./Runtime/Export/Debug/Debug. bindings.h 行:35)Run(ExecutionContext, ContextCallback, Object, Boolean) System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object) System.Threading.ThreadHelper:ThreadStart(Object) (文件名: ./Runtime/Export/Debug/Debug.bindings.h线路:35)Run(ExecutionContext, ContextCallback, Object, Boolean) System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object) System.Threading.ThreadHelper:ThreadStart(Object) (文件名: ./Runtime/Export/Debug/Debug.bindings.h线路:35)

我错过了什么吗?是 Unity 的问题还是我使用了 mac 上不可用的功能?

标签: c#.netunity3dcompression

解决方案


推荐阅读