体系结构i386的未定义符号:"_deflate",从libMo.a中的PlatCompress(enumCompressOperation,CompressCookie*,void*,long)引用

bap*_*api 56 iphone sybase ios sup

我正在使用SUP进行原生iOS应用程序.根据文档; 我已经包含了库并在Xcode中给出了链接路径.在构建获取以下错误时:

Undefined symbols for architecture i386:
  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个错误.我是使用SUP进行原生iOS开发的新手.

谢谢.

Dha*_*ena 145

我也有同样的错误.

libz.dylib添加到目标框架 - > Build Phases选项卡 - > Link Binaries With Libraries,

希望这对你有用.

注意:如果找不到libz.dylib,请尝试添加libz.tbd

  • 在Xcode7,iOS 9.1上为我工作.我缺少的libs是libz.tbd和libsqlite3.tbd (6认同)
  • 没有"libz.dylib"但添加libz.tbd并且工作:) (2认同)

Abh*_*ert 39

从Xcode 7开始,而不是添加libz.dylib,你应该这样做:

  • 转到项目Build Settings选项卡
  • 搜索 Other Linker Flags
  • 添加-lz为链接器标志(参见屏幕截图)
  • Product菜单中,Clean再次选择之前选择

lz链接选项

  • 请添加一个解释,说明为什么这可以解决问题. (2认同)
  • @ChuckKrutsinger我知道`ld`的手册解释了`-l [x]`标志告诉链接器如何找到`lib [x] .dylib`(在本例中为libz.dylib).比我更了解这个问题的人应该添加一个解释.我在这里的其他答案不起作用后偶然发现了解决方案,并发布了我的所作所为. (2认同)

小智 19

架构i386的未定义符号:

  "_deflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in         libMo.a(tlplatcompress.o)
  "_deflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_deflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_deflateParams", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*, long), void*, void**) in libMo.a(tlplatcompress.o)
  "_inflate", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateEnd", referenced from:
      PlatCompress(enumCompressOperation, CompressCookie*, void*, long) in libMo.a(tlplatcompress.o)
  "_inflateInit_", referenced from:
      StartCompression(enumCompressOperation, unsigned char, long (*)(void*, void*,  long), void*, void**) in libMo.a(tlplatcompress.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我也有同样的问题,我认为你没有包含libz.dylib库.

为此:

  1. 去目标部分
  2. 构建阶段选项卡
  3. 链接二进制文件与库
  4. 点击+按钮
  5. 搜索libz.dylib
  6. clcik on添加按钮.


Vin*_*dan 10

1.到目标部分

2.Build Phases选项卡

3.Link二进制文件库

4.点击+按钮

5.search libz.tbd(或libz.dylib)

6.点击添加按钮.

  • 你的答案与其他答案没什么不同,为什么你发布了它? (2认同)