Linker Fehler in Xcode 5 für libzbar.a

8

Nachdem ich ZBar Sdk in mein Projekt integriert habe, beginnt mein xcode 5-DP mit der Warnung:

  

"ld: warning: Verknüpfung von ObjC für iOS Simulator, aber Objektdatei (/Documents/Projects/Project/Utility/ZBarSDK/libzbar.a(ZBarReaderViewController.o)) wurde für MacOSX kompiliert       "

    
Pankti Patel 11.09.2013, 11:47
quelle

4 Antworten

39

Erstellen einer ZBar-Bibliothek

Irgendwann wieder hatte ich ein anderes Problem mit ZBar und wurde zu einem hilfreichen Satz von Anweisungen hier geführt: Ссылка

Im Grunde sagen Ihnen die Anweisungen, wie Sie den Quellcode mit Mercurial auschecken und dann Ihre eigene libzbar.a-Datei kompilieren. Dies sollte Ihr Problem lösen.

Gerade in der letzten Nacht musste ich die Anweisungen noch einmal befolgen, weil meine Version von ZBar nach der Aktualisierung auf Xcode 5 nicht mehr lief. Ich ermutige Sie, dem obigen Link zu folgen, aber ich werde es tun weitgehend Krippe es hier, zusammen mit einigen Schritten, die ich für die neue iPhone-Plattform hinzugefügt habe.

Laden Sie herunter und installieren Sie Mercurial für Mac. Ich habe das neueste für OS X 10.8 genommen. (Der Installationsbildschirm scheint beim Starten des Installationsprogramms immer noch 10.7 zu lauten. Seien Sie also nicht überrascht.)

Laden Sie nach der Installation von Mercurial die Quelle für ZBar mit den folgenden Befehlen herunter:

%Vor%

Wählen Sie im Xcode-Menü "Produkt & gt; Schema & gt; libzbar" und dann "Produkt & gt; Schema & gt; Schema bearbeiten ...". (Sie erhalten eine Warnung, dass das Projekt aktualisiert wurde, um den LLBD-Debugger zu verwenden. Yay!)

Wählen Sie "Ausführen" in der Build-Konfiguration und klicken Sie auf OK.

Als nächstes werden wir libzbar für das Gerät und den Simulator kompilieren. Wählen Sie in der Liste "Projekt und Ziele" das libzbar-Ziel aus und klicken Sie auf die Registerkarte "Build-Einstellungen". Überprüfen Sie Ihre Architektureinstellungen, wie im Screenshot gezeigt. (Stellen Sie sicher, dass es iOS und Arm64 Armv7 Armv7s sagt.)

Vergessen Sie auch nicht, Architekturen in Standardarchitekturen (armv7, armv7s, arm64) zu ändern , sonst wird Ihr Projekt nicht mit arm64 kompiliert. (Dies wird nicht richtig auf Screenshot gezeigt)

Nun, hier ist der Teil, den ich letzte Nacht entdeckt habe. Mein Bereitstellungsziel wurde auf iOS 3.1 festgelegt. Sie erhalten eine Fehlermeldung, wenn Sie versuchen, mit dieser Einstellung in Xcode 5 zu kompilieren. Ich habe es zu iOS 7.0 geändert.

Nachdem Sie Ihre Einstellungen überprüft und alle erforderlichen Änderungen vorgenommen haben, führen Sie Build aus. Gehen Sie zurück zu "Produkt & gt; Schema & gt; Schema bearbeiten ..." und prüfen Sie das Drop-down-Menü "Ziel". (Siehe Screenshot oben.) Ich hatte meine iPhone Retina (3,5 Zoll). Ändern Sie es zu iOS-Gerät und führen Sie Build ein zweites Mal aus. Sie haben die Bibliothek jetzt zweimal erstellt: einmal für den Simulator und einmal für das Gerät. Sie müssen die beiden Bibliotheken kombinieren. Gehe in das folgende Verzeichnis im Terminal:

%Vor%

Darin gibt es eine Reihe kryptisch benannter Verzeichnisse, von denen eines "zbar" beginnt. Hier ist mein vollständiger Pfad als Beispiel:

%Vor%

Gehen Sie in dieses zbar-Verzeichnis und wechseln Sie dann in das Build / Products-Verzeichnis.

%Vor%

Dort sehen Sie zwei Ordner: Release-iphoneos und Release-iphonesimulator. (In jedem befindet sich eine lizbar.a-Datei.) Kombinieren Sie sie mit dem folgenden Befehl:

%Vor%

Sie haben jetzt eine universelle Bibliothek (libzbar.a) erstellt, die Sie verwenden sollten und die die mit Ihrer ZBar-Distribution erhält. Es befindet sich im selben Build / Product-Verzeichnis.

Wie ich schon sagte, habe ich die Anweisungen des Verfassers des oben stehenden Links, Herrn Cappelli, weitgehend abgeglichen und für den neuesten Xcode aktualisiert.

    
Mario 21.09.2013 21:28
quelle
1

Ich habe den Fehler umgangen, indem ich "Build Active Architecture Only" in YES geändert habe, nicht nur für Debug, sondern auch für Release ... Zumindest für jetzt, das hat mich gerettet.

    
almirb 10.04.2014 17:48
quelle
0

Seit Dezember 2014 gibt es eine einfachere Lösung als Mario's Antwort. Verwenden Sie CocoaPods und fügen Sie diese Zeile zu Ihrer Poddatei hinzu:

%Vor%

Führen Sie dann das klassische pod install aus. Es wird gut bauen, einschließlich für arm64.

    
Cœur 18.03.2018 16:43
quelle
-2
___ answer18937831 ___

Erstellen einer ZBar-Bibliothek

Irgendwann wieder hatte ich ein anderes Problem mit ZBar und wurde zu einem hilfreichen Satz von Anweisungen hier geführt: Ссылка

Im Grunde sagen Ihnen die Anweisungen, wie Sie den Quellcode mit Mercurial auschecken und dann Ihre eigene libzbar.a-Datei kompilieren. Dies sollte Ihr Problem lösen.

Gerade in der letzten Nacht musste ich die Anweisungen noch einmal befolgen, weil meine Version von ZBar nach der Aktualisierung auf Xcode 5 nicht mehr lief. Ich ermutige Sie, dem obigen Link zu folgen, aber ich werde es tun weitgehend Krippe es hier, zusammen mit einigen Schritten, die ich für die neue iPhone-Plattform hinzugefügt habe.

Laden Sie herunter und installieren Sie Mercurial für Mac. Ich habe das neueste für OS X 10.8 genommen. (Der Installationsbildschirm scheint beim Starten des Installationsprogramms immer noch 10.7 zu lauten. Seien Sie also nicht überrascht.)

Laden Sie nach der Installation von Mercurial die Quelle für ZBar mit den folgenden Befehlen herunter:

%Vor%

Wählen Sie im Xcode-Menü "Produkt & gt; Schema & gt; libzbar" und dann "Produkt & gt; Schema & gt; Schema bearbeiten ...". (Sie erhalten eine Warnung, dass das Projekt aktualisiert wurde, um den LLBD-Debugger zu verwenden. Yay!)

Wählen Sie "Ausführen" in der Build-Konfiguration und klicken Sie auf OK.

Als nächstes werden wir libzbar für das Gerät und den Simulator kompilieren. Wählen Sie in der Liste "Projekt und Ziele" das libzbar-Ziel aus und klicken Sie auf die Registerkarte "Build-Einstellungen". Überprüfen Sie Ihre Architektureinstellungen, wie im Screenshot gezeigt. (Stellen Sie sicher, dass es iOS und Arm64 Armv7 Armv7s sagt.)

Vergessen Sie auch nicht, Architekturen in Standardarchitekturen (armv7, armv7s, arm64) zu ändern , sonst wird Ihr Projekt nicht mit arm64 kompiliert. (Dies wird nicht richtig auf Screenshot gezeigt)

Nun, hier ist der Teil, den ich letzte Nacht entdeckt habe. Mein Bereitstellungsziel wurde auf iOS 3.1 festgelegt. Sie erhalten eine Fehlermeldung, wenn Sie versuchen, mit dieser Einstellung in Xcode 5 zu kompilieren. Ich habe es zu iOS 7.0 geändert.

Nachdem Sie Ihre Einstellungen überprüft und alle erforderlichen Änderungen vorgenommen haben, führen Sie Build aus. Gehen Sie zurück zu "Produkt & gt; Schema & gt; Schema bearbeiten ..." und prüfen Sie das Drop-down-Menü "Ziel". (Siehe Screenshot oben.) Ich hatte meine iPhone Retina (3,5 Zoll). Ändern Sie es zu iOS-Gerät und führen Sie Build ein zweites Mal aus. Sie haben die Bibliothek jetzt zweimal erstellt: einmal für den Simulator und einmal für das Gerät. Sie müssen die beiden Bibliotheken kombinieren. Gehe in das folgende Verzeichnis im Terminal:

%Vor%

Darin gibt es eine Reihe kryptisch benannter Verzeichnisse, von denen eines "zbar" beginnt. Hier ist mein vollständiger Pfad als Beispiel:

%Vor%

Gehen Sie in dieses zbar-Verzeichnis und wechseln Sie dann in das Build / Products-Verzeichnis.

%Vor%

Dort sehen Sie zwei Ordner: Release-iphoneos und Release-iphonesimulator. (In jedem befindet sich eine lizbar.a-Datei.) Kombinieren Sie sie mit dem folgenden Befehl:

%Vor%

Sie haben jetzt eine universelle Bibliothek (libzbar.a) erstellt, die Sie verwenden sollten und die die mit Ihrer ZBar-Distribution erhält. Es befindet sich im selben Build / Product-Verzeichnis.

Wie ich schon sagte, habe ich die Anweisungen des Verfassers des oben stehenden Links, Herrn Cappelli, weitgehend abgeglichen und für den neuesten Xcode aktualisiert.

    
___ qstntxt ___

Nachdem ich ZBar Sdk in mein Projekt integriert habe, beginnt mein xcode 5-DP mit der Warnung:

  

"ld: warning: Verknüpfung von ObjC für iOS Simulator, aber Objektdatei (/Documents/Projects/Project/Utility/ZBarSDK/libzbar.a(ZBarReaderViewController.o)) wurde für MacOSX kompiliert       "

    
___ qstnhdr ___ Linker Fehler in Xcode 5 für libzbar.a ___ tag123iphone ___ Verwenden Sie diesen Tag NICHT, es sei denn, Sie wenden sich speziell an Apple's iPhone und / oder iPod touch. Verwenden Sie für nicht hardwareabhängige Fragen das Tag [ios]. Weitere zu betrachtende Tags sind [xcode] (aber nur, wenn es sich um die IDE selbst handelt), [swift], [objective-c] oder [cacao-touch] (aber nicht [cocoa]). Bitte verzichten Sie auf Fragen zum iTunes App Store oder zu iTunes Connect. Wenn Sie C # verwenden, markieren Sie mit [mono]. ___ answer49350394 ___

Seit Dezember 2014 gibt es eine einfachere Lösung als Mario's Antwort. Verwenden Sie CocoaPods und fügen Sie diese Zeile zu Ihrer Poddatei hinzu:

%Vor%

Führen Sie dann das klassische %code% aus. Es wird gut bauen, einschließlich für arm64.

    
___ tag123xcode5 ___ Xcode 5 ist Apples integrierte Entwicklungsumgebung (IDE). Xcode 5.0 enthält die SDKs für Mac OS X 10.8 und iOS 7. * Verwenden Sie dieses Tag nur, wenn Ihre Frage speziell die Xcode-IDE betrifft! * ___ antwort19224650 ___

ZBarSDK-1.3.1 BETA behebt das Problem ohne Neuaufbau.

Laden Sie einfach ZBarSDK-1.3.1.dmg herunter, entfernen Sie den ZBarSDK-Ordner aus Ihrem Projekt und ersetzen Sie ihn durch den letzten: Ссылка

    
___ answer22995381 ___

Ich habe den Fehler umgangen, indem ich "Build Active Architecture Only" in YES geändert habe, nicht nur für Debug, sondern auch für Release ... Zumindest für jetzt, das hat mich gerettet.

    
___ tag123ios7 ___ iOS 7 ist die siebte Version von Apples iOS-Mobilbetriebssystem und ist der Nachfolger von iOS 6. Es wurde am 10. Juni 2013 auf der Apple Worldwide Developers Conference (WWDC) angekündigt und am 18. September 2013 veröffentlicht . ___ tag123zbarsdk ___ für spezifische Fragen zum iPhone. ZBar ist eine Open-Source-Software-Suite (GNU LGPL 2.1) zum Lesen von Barcodes aus verschiedenen Quellen, wie Videostreams, Bilddateien und rohen Intensitätssensoren. Es unterstützt viele populäre Symbologien (Arten von Barcodes) einschließlich EAN-13 / UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 von 5 und QR-Code. ___
crubio 07.10.2013 12:14
quelle

Tags und Links