C++那边使用zlib1.2.3 compress函数压缩的 byte[]加入到SQL中
C#从SQL中读取出byte[] 然后解压缩  数据从SQL中读取没错使用过ICSharpCode.DLL  中的 ZipInputStream  解压失败
后想到调用C的DLL 
[DllImport("zlib.dll"), CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int uncompress(
            [In, Out, MarshalAs(UnmanagedType.LPArray)]
            ref byte[] cpbyte,
            ref ulong cplen,
            [MarshalAs(UnmanagedType.LPArray)]
            byte[] oldbyte,
            ulong olen);可是一到 uncompress 函数 就整个程序自动退出了`````求救啊!~~~~~~ 救命啊~~~~~~~~~~  

解决方案 »

  1.   

    在C++中压缩的啊~~~~!~~~~     C#只解压zlib解压原形
    ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
                                       const Bytef *source, uLong sourceLen));
      

  2.   

    压缩前后都是byte[]  所以不存在序列化这个问题的
    我就怀疑是在包装的时候可能错误了``
    可是``` 就是没找到包装的类型转换说明````
      

  3.   

    C++  压缩和 解压缩都没问题!!~~~~~现在主要问的是 C# 包装这个DLL  对不对~~
    每次调用到这个函数 整个程序就自动退出  为什么?
      

  4.   

    C++那个DLL,明明要给C#用,还在函数里面定义弄那么多指针做什么?写成COM,严格按照COM数据类型包装函数指针处理会有很多问题的
      

  5.   

    直接调用Winrar的就得了。还搞什么zip的啊,浪费时间。
      

  6.   

    ~~~~~~~~~.....  郁闷哦    原DLL  是zlib.dll   要怎么改成COM组件啊``
      

  7.   

    没办法啊     那边是C++  写压缩到SQL里的 
    我这边是用C# 读取出来  然后解压啊````
    现在就是数据读出来了 我这边解不了```    dll  用的一个```
      

  8.   

    自己用C++给那个DLL做个壳……
      

  9.   

    结贴  终于还是搞定了   我用COM再调用了一次DLL    C#调用COM```
    结果发现``  C++中 byte*   到C#中 不是byte[]  而是ref byte  ````````````````````````
    真X他大爷!!    MSDN上 数据类型里都没说过  靠