2014-09-12 3 views
11

Sto cercando di costruire il mio progetto in XCode 6 GM per il dispositivo (versione base SDK è 7.1), e ottengo errore del linker:XCode 6 GM: errore di linker quando si costruisce per il dispositivo (Metal non trovato)

ld: framework not found Metal for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Lo stesso progetto si integra perfettamente in XCode 5 senza modifiche nelle impostazioni del progetto. (Inoltre, compilare XCode 6 per il simulatore .)

Sto costruendo con SDK 7.1, perché XCode 6 tenta di collegarsi comunque a Metal?

+2

Pulizia del progetto risolto per me. – c0d3Junk13

+0

Intendevi con una destinazione di distribuzione 7.1 contro l'SDK 8.0? Xcode 6 non ha l'SDK 7.1. –

+1

@JeremyHuddlestonSequoia no, intendevo 7.1 SDK. L'ho copiato dalla directory XCode 5. – HiveHicks

risposta

9

Avendo lo stesso problema. Sono in grado di costruire l'app fine in Xcode 6 puntato sul simulatore o su un telefono, ma durante l'archiviazione ottengo questo errore. Sto usando l'SDK di iOS 7.1.

Sto usando cocoapods e ho scoperto che posso risolvere il problema con impostando 'Link Frameworks Automaticamente' su NO per il progetto dei pod o archiviando mentre c'è un dispositivo collegato e lo schema è indirizzato a un dispositivo non solo "Dispositivo iOS".

Questo è un problema causato dalle impostazioni di default del progetto di Xcode 6.

Edit: Ecco un'altra spiegazione di questa soluzione: http://www.appsee.com/blog/dev/xcode-new-link-frameworks-automatically-fix-framework-not-found-metal-for-architecture-armv7

+2

Questo in realtà non risponde alla domanda. Se hai una domanda diversa, puoi richiederla facendo clic su [Invia domanda] (http://stackoverflow.com/questions/ask). Puoi anche [aggiungere una taglia] (http://stackoverflow.com/help/privileges/set-bounties) per attirare maggiormente l'attenzione su questa domanda una volta che hai abbastanza [reputazione] (http://stackoverflow.com/help/ che cosa è-la reputazione). – MrTux

+1

Risponde alla domanda @MrTux ... c'è una soluzione data ma l'OP vorrebbe comunque una migliore se disponibile. – Ben

+0

Da allora ho messo i cocoapod sotto controllo di versione e ho appena impostato automaticamente Link Frameworks su NO e l'ho eseguito. La mia squadra non ha avuto problemi da allora e anche il mio server Jenkins è felice. – RJDubz

-1

Mediante l'SDK iOS 7.1 con Xcode 6 non è una configurazione supportata. Il linker si sta comportando correttamente qui. L'SDK 7.1 non contiene Metal.framework per il collegamento e hai richiesto il collegamento a Metal.framework. È necessario utilizzare l'SDK iOS 8.0 o successivo per utilizzare Metal.framework.

+0

Non uso la struttura metallica. – HiveHicks

+0

Il registro che hai fornito indica chiaramente il contrario. Ti suggerisco di utilizzare l'SDK di iOS 8 in quanto è l'unico SDK iOS supportato da utilizzare con Xcode 6. Quindi guarda le fasi di costruzione del target del tuo progetto Xcode per vedere cosa sta portando in Metal.framework. –

+0

BS. È possibile rilasciare l'SDK 7.1 in Xcode 6, per non avere due versioni Xcode sul PC. –

1

Ho avuto lo stesso problema in un codice base che costruiva l'SDK iOS 8.0 (Xcode 6.0.1) e che presenta questo problema con iOS 7.1 SDK (anche se in Xcode 5.1.1). Sembra che ci sia un sacco di progetti diversi che hanno questo problema. Vedere here per ulteriori dettagli.

Ciò che ha risolto il problema per me era andare alle impostazioni delle "fasi di costruzione" dei miei obiettivi, "Collega binario con le librerie" e rimuovere e riaggiungere CoreVideo.framework, "Prodotto> Pulisci", infine " Prodotto> Esegui '.