web-dev-qa-db-fra.com

Symboles non définis pour l'architecture i386: "_deflate", référencé depuis PlatCompress (enumCompressOperation, CompressCookie *, void *, long) dans libMo.a

Je fais une application iOS native en utilisant SUP.Comme indiqué dans la documentation; j'ai inclus la bibliothèque et donné le chemin du lien dans Xcode. Lors de la construction, obtenir l'erreur suivante:

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)

S'il vous plaît, aidez-moi à résoudre cette erreur.Je suis nouveau dans le développement iOS natif en utilisant SUP.

Merci.

55
bapi

J'ai également eu une même erreur.

Ajoutez libz.dylib au framework depuis la cible -> onglet Build Phases -> Link Binaries With Libraries,

j'espère que cela fonctionnera pour vous.

Remarque: Si libz.dylib introuvable, essayez d'ajouter libz.tbd

142
Dhaval H. Nena

À partir de Xcode 7, au lieu d'ajouter libz.dylib, vous devriez faire ceci:

  • Accédez au projet Build Settings tab
  • Rechercher Other Linker Flags
  • Ajouter -lz comme indicateur de l'éditeur de liens (voir capture d'écran)
  • Dans le menu Product, sélectionnez Clean avant de reconstruire

lz link option

39
Abhi Beckert

Symboles non définis pour l'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)

J'ai également eu le même problème, je pense que vous n'avez pas inclus la bibliothèque libz.dylib.

Faire cela:

  1. aller à la section cible
  2. Onglet Générer les phases
  3. Lier les fichiers binaires aux bibliothèques
  4. cliquez sur le bouton +
  5. recherche libz.dylib
  6. cliquez sur le bouton Ajouter.
19
asheesh Verma

1. aller à la section cible

2.Onglet Phases de construction

3. Liaison de fichiers binaires avec des bibliothèques

4. cliquez sur le bouton +

5. recherchez libz.tbd (ou libz.dylib)

6. cliquez sur le bouton Ajouter.

10
Vinoth Anandan