2015-06-13 8 views
51

Ich verwende einige externe Codes von Google in meinem neuen Swift 2.0-Projekt, das in früheren Versionen "libz.dylib" benötigt. Nach dem Update auf den neuen XCode/das neue SDK.Swift 2/iOS 9 - libz.dylib nicht gefunden

XCode ist jetzt nicht in der Lage, die libz.dylib zu importieren und einige Fehler

Undefined symbols for architecture i386: "_deflate", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_deflateEnd", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "deflateInit2", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflate", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflateEnd", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "inflateInit2", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

wirft Wenn die verfügbaren Pakete in den „Build-Phase“ Einstellungen suchen, kann ich „libz.tbd“ finden, das zu sein scheint der Ersatz für die libz.dylib. Beim Importieren dieser Lib bleibt der Linker-Fehler gleich, aber ich erhalte diese zusätzliche Warnung:

warning: skipping file '/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd' (unexpected file type 'text' in Frameworks & Libraries build phase)

Irgendeine Idee, was zu tun ist?

+0

versuchen Produkt Löschen. Wenn es nicht hilft. Löschen von Xcode-Caches und abgeleiteten Daten –

+0

Ich stimme mit @LeoDabus überein, um "Product Clear" zu verwenden. Als neues Projekt wird das Hinzufügen von tbd (wofür steht es?) Gut kompilieren. – Laurent

+1

Ich habe das Lochprojekt bereits gereinigt und neu gebaut - gleiche Ausgabe! –

Antwort

108

Ich hatte das gleiche Problem. Ich habe eine Art herum gefunden.

  1. Zum Erstellen Phase> Link Binary mit Librairies> +> In anderen
  2. Einmal im Dateiauswahlfenster zu tun "CMD" + Shift + G (Zum Ordner) und geben Sie/usr/lib/
  3. von/usr/lib können Sie hinzufügen: libz.dylib und mehr ...
  4. Compile und Spaß haben
+37

Das ist veraltet. Es sollte jetzt libz.tbd sein. – bkwebhero

+5

@BK Vielleicht sollte es immer noch nicht für mich auf Yosemite mit Xcode 7.1.1 mit .tbd - mit der oben genannten Lösung funktioniert im Simulator und auf dem Gerät – dogsgod

+0

Es scheint auch wie Sie jetzt nicht einmal müssen habe sie in deiner Liste Link Binary with Libraries - zumindest in meinem Fall findet Xcode sie automatisch. Wie in AZ0's Antwort unten. – Alex

-2

der Zwischenzeit können Sie vorherige SDK verwenden. Dies ist meine Antwort für libsqlite3:

https://stackoverflow.com/a/30981161/627794

Edit: (Link Inhalt hinzugefügt)

Terminal öffnen, Typ (Änderung Ihrer gewünschten Bibliothek, zB libz)

locate libsqlite3.dylib 

Sie finden mehrere Dateien wie diese:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libsqlite3.dylib 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libsqlite3.dylib 

Gehen Sie zu Ihrer Projekteinstellung -> Build Phases -> Link with Binaries. Fügen Sie BEIDE Dateien hinzu, indem Sie auf + und dann auf Add Other klicken. Hit Cmd-Shift-G, und kopieren Sie den Dateipfad. Klicken Sie auf Open.

Wenn Sie sqlite3 mit Macports installieren, entfernen Sie /opt/local/lib aus Bibliothek Suchpfad in Build-Einstellungen.

8

Entfernen Sie alle dynamischen Bibliotheken (Dylib) aus der Verknüpfung mit Binaries-Phase. Es wird diese Bibliotheken selbst finden.

+0

Danke! Es funktioniert einfach so. Das Problem für mich mit Xcode 7.2, dass der Simulator .tbd verwendet und iphone Gerät/Archiv verwendet .dylib. So beschwerte es sich, dass es fehlende Bibliotheken nicht finden kann. –

+0

Das einfache Entfernen der Bibliotheken war in meinem Fall die richtige Antwort. Es scheint, als müssten sie in der alten Version von Xcode sein, aber in der aktuellen Version, die ich verwende (8.1), funktioniert es ohne sie. – Alex

1

libz.dylib ist die dynamische lib für Zlib, Sie können Zlib installieren von hier http://zlib.net/

78

libz.dylib jetzt unter libz.tbd quote from the Apple developer forums gefunden:

For those who are curious, the .tbd files are new "text-based stub libraries", that provide a much more compact version of the stub libraries for use in the SDK, and help to significantly reduce its download size.

Hoffentlich mehr Dokumentation wird demnächst.

bearbeiten

es um clearify, werde ich Guitz zitieren Antwort mit dem aktualisierten Inhalt

  1. Go to Build Phases >Link Binary with Librairies > + > Add other
  2. Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
  3. From /user/lib you can add : libz.tbd and more...
  4. Compile and have fun
+3

Dies sollte die erste Antwort sein! –

+2

Ist dies für ältere iOS-Versionen sicher? Auf dem von Ihnen angegebenen Link heißt es: "Alle Referenzen auf .tbd löschen", sollten wir also .tbd verwenden oder nicht? – jcesarmobile

0

Sie libz.1.dylib von Ort hinzufügen:/usr/lib/

  1. Gehen Sie zu Buildphasen> Link Binary mit Librairies> +> Fügen Sie weitere hinzu
  2. Einmal im Dateiauswahlfenster tun CMD + Shift + G (Gehe zum Ordner) und geben Sie/usr/lib/
  3. Von/user/lib Sie hinzufügen können: libz.1.dylib

Es hat für mich gearbeitet.

2

Ich habe dieses Problem in Objective-c project.ios9.1, xcode7.1

1.Go auf Ziel> Build Phasen> Link Binary mit Librairies> +

2.select libz.tbd und fügen Sie es

es funktionierte für mich

0

Sie können auch die lybz.dylib von "Other Linker Flags" in den Build-Einstellungen hinzufügen von t Zugabe Das Argument -lz.

Ich musste dies tun, da die .dylib-Bibliothek bei Verwendung der Methode, in der Sie die Bibliothek von/usr/lib referenzierten, bei der Bereitstellung meiner App für unsere Tester nicht aufgelöst werden konnte und zum Absturz der App beim Start führte.