2015-07-03 6 views
8

Zuvor konnte ich mein Unity-Ausgabe-Xcode-Projekt ohne Probleme erstellen und ausführen. Aber jetzt, dass Apple 64-Bit-Unterstützung für iOS-Apps erfordert, bin ich gezwungen, die folgenden Änderungen in der Einheit zu tun:Wenn -ObjC-Linker-Flag im Universal Architecture-Projekt einen Mach-O Linker-Fehler verursacht?

Build settings -> Player settings -> Other settings -> Scripting backend -> IL2CPP 
Build settings -> Player settings -> Other settings -> Architecture -> Universal 

Das Problem ist jetzt, dass ich nicht erfolgreich aufbauen und mein Xcode-Projekt auf meinem Gerät funktionieren. Ich bekomme diese Apple Mach-O linker error, die ich vorher nicht bekommen habe.

Hier ist der Fehler, die ich von Xcode bekam:

ld: warning: directory not found for option '-F-F/Users/user/Desktop/qwer/Frameworks/Plugins/IOS' 
ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"' 
duplicate symbol l082 in: 
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(FMDatabase.o) 
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o) 
duplicate symbol l084 in: 
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleVideoPlayer.o) 
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o) 
ld: 2 duplicate symbols for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Von dem, was ich beobachtet habe, scheint mit der VungleSDK Lage, etwas zu sein? Was mir fremd ist, weil ich außer dem oben erwähnten keine Änderungen vorgenommen habe.

Kann jemand dieses Problem beheben?

Auch Randnotiz: Ist jemand langsam kompilieren Zeit beim Wechsel zu IL2CPP und Universal Architektur? Ich habe bereits meinen Xcode Build auf Release umgestellt (wie jemand online vorgeschlagen hat) und es ist immer noch so. Es dauert sehr lange, bis mein Code kompiliert ist. Es dauerte nur wie weniger als 10 Sekunden, bevor ich zu IL2CPP und Universal geschaltet

UPDATE: Ich muss erwähnen, dass ich mit Chartboost, AdColony und Vungle in meiner app. Ich habe etwas experimentiert und herausgefunden, dass das Entfernen der -ObjC und -fobjc-arc Linker-Flags aus meinem Xcode-Projekt den Mach-O-Linker-Fehler behoben hat und ich in der Lage bin, wieder erfolgreich zu bauen und zu laufen. Die warning: directory not found for option, die ich bekam, war immer noch dort, aber es kompilierte noch und lief erfolgreich und alle Funktionen von und Vungle arbeiteten vollständig in meiner APP.

Ich hatte diese Linker-Flags an erster Stelle, weil das SDK AdColony erfordert sie. Aber das Entfernen von AdColony hörte auf, in meiner App zu funktionieren. Also ist es auch keine saubere Lösung.

Dies führt mich entweder 2 Dinge zu glauben: die AdColony Einheit Plugin Probleme mit Unterstützung Universal-/ARM64 Architektur oder den -ObjC Linker-Flag kompatibel ist nicht für den Bau von Universal/ARM64-Architektur hat.

Ich würde mich freuen, wenn jemand dieses verwirrende Problem beleuchten kann.

Dank

+0

Es scheint, als ob einige Symbole in der Vungle SDK dupliziert sind. Stellen Sie sicher, dass Sie eine SDK verwenden, die 64 Bit unterstützt, was wie Sie aussieht, und versuchen Sie, das Projekt zu bereinigen und dann einen neuen Build zu erstellen. –

+0

@ hades2510 Danke für den Kommentar. Ich habe das Projekt überarbeitet und erneut kompiliert, aber ich erhalte denselben Fehler. Obwohl ich nicht ganz sicher bin, ob das neueste VungleSDK 64Bits unterstützt. Aber ohne "Ignorieren" Kommentare zu dem Fehler, ich denke, es unterstützt 64. – aresz

+0

Wie Sie die duplizierten Symbole zu beheben? – aresz

Antwort

0

Ich habe Erfahrung nicht mit Unity, aber wenn ich seltsam Linker Fehler auf meiner App bekommen muss ich nur noch ein clean laufen sie zu beheben.

+0

Danke für die Antwort. Ich habe versucht, das Projekt bereits zu säubern und Projektordner zu säubern. Aber immer noch kein Glück, ich bekomme immer noch den gleichen Fehler. – aresz

3

Ich denke, Sie haben mehrere Vungle SDKs importiert in Ihrem Projekt referenziert. Alles, was Sie tun müssen, ist einen von ihnen zu entfernen. Wenn du denkst, dass einer von ihnen älter ist und der andere neuer und nicht welcher ist, dann entferne beide und dann importiere das neueste Vungle SDK neu.

Auch fand ich eine weitere mögliche Ausgabe aus den Protokollen Sie

geschrieben
ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"' 

Es scheint so, dass Pfad zu Ihrem Vungle SDK wird in „“ (Anführungszeichen) in Ihren ‚FrameWork Suchpfaden‘ eingeschlossen. Überprüfen Sie Ihren Pfad, der wie im Referenzbild unten aussehen sollte.

anzumerken, dass der Pfad $(SRCROOT)/../../Assets/Editor/Vungle/VungleSDK nicht in "" (Hochkommata) eingeschlossen.

Update 1 Die meisten dieser Probleme treten auf, wenn der Pfad nicht korrekt in den Framework-Suchpfad eingegeben wurde. In meinem Fall hatte ich mehrere Plugins und musste nicht nur die Framework Search Paths, sondern auch die Header Search Paths und Library Search Paths überprüfen. Ich hatte auch "" in meinen Bibliothekssuchpfaden und entfernte sie ebenfalls (sei vorsichtig beim Entfernen von "" - eine falsche Entfernung und du musst ein neues xcode-Projekt erstellen). Ich habe meine anderen Suchpfade Bilder

Header-Suchpfade enter image description here

Bibliothek Suchpfade enter image description here

+0

Danke für die ausführliche Antwort. Ich habe versucht, alle meine Framework-Suchpfade zu löschen und das Vungle-Framework neu hinzugefügt, um sicher zu sein. Ich habe auch dafür gesorgt, dass es keine "" "in den Pfaden gibt. Leider bekomme ich immer noch den Mach-O Linker Fehler. – aresz

+0

Ich habe die Antwort aktualisiert. Ich hatte auch dieses Problem, einen Mach-O-Linkerfehler zu bekommen, selbst nachdem ich das Vungle-Problem behoben hatte, aber in meinem Fall hatte ich mehrere Plugins in meinem Einheitsprojekt, z. Flurry und Chartboost. Schauen Sie, das könnte Ihr Problem lösen. –

+0

Hmm ... Bauen Sie für die universelle (ARMv7 und ARM64) Architektur? Ich denke, das Problem könnte mit dem AdColonySDK zusammenhängen. Es ist, weil es erfordert, dass ich '-ObjC' Linker-Flag setzen, damit es funktionieren kann. Mit diesem Linker-Flag erhalte ich jetzt den Mach-O-Linker-Fehler. Wenn ich das Linker-Flag entferne, kann ich erfolgreich auf meinem Gerät aufbauen und laufen und alles läuft gut. Die Folge ist, dass AdColony nicht mehr in meiner App funktioniert ... Ich habe meiner Frage aktualisierte Details hinzugefügt, seit ich das gefunden habe. – aresz

0

angebracht Ich denke, man die warning: directory not found for option Problem beheben kann durch Search Paths Ihrer SDKs als Recursive machen.

Verwandte Themen