使用ASIHTTPRequest的ASIDataCompressor与ASIDataDecompressor进行gzip压缩与解压缩,出现的问题

来源:互联网 发布:苹果库存监控软件 编辑:程序博客网 时间:2024/05/22 03:43

导入系统的libbz2.1.0.tbd

导入头文件#import <zlib.h>

从网上找的gzip压缩与解压缩方法

如:http://my.oschina.net/u/1244672/blog/185175


编译后,报错:

Undefined symbols for architecture x86_64:
  "_deflate", referenced from:
      +[JHEncryptTool gzipData:] in JHEncryptTool.o
  "_deflateEnd", referenced from:
      +[JHEncryptTool gzipData:] in JHEncryptTool.o
  "_deflateInit2_", referenced from:
      +[JHEncryptTool gzipData:] in JHEncryptTool.o
  "_inflate", referenced from:
      +[JHEncryptTool ungzipData:] in JHEncryptTool.o
  "_inflateEnd", referenced from:
      +[JHEncryptTool ungzipData:] in JHEncryptTool.o
  "_inflateInit2_", referenced from:
      +[JHEncryptTool ungzipData:] in JHEncryptTool.o
ld: symbol(s) not found for architecture x86_64


单独使用ASIDataCompressor与ASIDataDecompressor这两个类时,编译时,也会报同样的错!


解决办法:

Build Setting里面Other Linker Flags 添加 -lz



(2016-12-22)

另一个类似的问题:

Undefined symbols for architecture arm64:
  "_inflate", referenced from:
      +[WXOMTAHelper GUnzip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gunzippedData] in libWeiboSDK.a(WBSDKGZIP.o)
  "_deflate", referenced from:
      +[WXOMTAHelper GZip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gzippedDataWithCompressionLevel:] in libWeiboSDK.a(WBSDKGZIP.o)
  "_inflateEnd", referenced from:
      +[WXOMTAHelper GUnzip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gunzippedData] in libWeiboSDK.a(WBSDKGZIP.o)
  "_deflateInit2_", referenced from:
      +[WXOMTAHelper GZip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gzippedDataWithCompressionLevel:] in libWeiboSDK.a(WBSDKGZIP.o)
  "_inflateInit2_", referenced from:
      +[WXOMTAHelper GUnzip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gunzippedData] in libWeiboSDK.a(WBSDKGZIP.o)
  "_deflateEnd", referenced from:
      +[WXOMTAHelper GZip:Out:] in libWeChatSDK.a(MTAHelper.o)
      -[NSData(WBSDKGZIP) wbsdk_gzippedDataWithCompressionLevel:] in libWeiboSDK.a(WBSDKGZIP.o)
ld: symbol(s) not found for architecture arm64


导入系统的libz.tbd,就解决问题了。


回头看,之前的问题,去掉

Build Setting里面Other Linker Flags 添加的 -lz

这回报错:

Undefined symbols for architecture x86_64:
  "_deflate", referenced from:
      -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  "_deflateEnd", referenced from:
      -[ASIDataCompressor closeStream] in ASIDataCompressor.o
  "_deflateInit2_", referenced from:
      -[ASIDataCompressor setupStream] in ASIDataCompressor.o
  "_inflate", referenced from:
      -[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
  "_inflateEnd", referenced from:
      -[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
  "_inflateInit2_", referenced from:
      -[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
ld: symbol(s) not found for architecture x86_64


去掉之前导入系统库的libbz2.1.0.tbd,

换成libz.tbd,问题也解决了。


所以,libz.dylib是提供zip压缩解压缩的库。

所以,要么导入libz.tbd,要么Other Linker Flags 添加 -lz



1 0
原创粉丝点击