2012-09-23 13 views
8

Ho un progetto che utilizza zbar-sdk (una libreria di scansione di codici a barre).xcode 4.5 - simboli non trovati per l'architettura i386 (zbar)

Dopo aver aggiornato la mia macchina su xcode 4.5 e ios6sdk, ho alcuni problemi.

Sono riuscito a creare il simulatore senza toccare nulla del mio progetto. Questo sta usando l'ultima libreria di zbar 1.2.

Ho quindi voluto creare sul mio dispositivo ios6 per il test, e questo è quando ho ricevuto un errore.

Dopo un po 'googling sul forum zbar sviluppatore, ho visto che avevo bisogno di ottenere la fonte zbar e costruire la libzbar.a per ARMv7 e armv7s in quanto questo non è ancora stato fatto dallo sviluppatore ZBar.

Sede - http://sourceforge.net/projects/zbar/forums/forum/1072195/topic/5728912

Quindi ho fatto questo, re-importato il libzbar.a aggiornato nel mio progetto. Ho quindi costruito per il mio dispositivo e ha funzionato! Sono stato in grado di ottenere la mia app sul mio dispositivo di test e la libreria di codici a barre zbar ha funzionato bene.

Pensavo che fosse la fine, ma sfortunatamente no.

Ho quindi provato a creare nuovamente il simulatore (ios6), e questo è quando non funziona.

Non importa quello che non riesco a ottenere questo progetto per la costruzione sia per il dispositivo e simualtor allo stesso tempo e con le stesse impostazioni :(

mie impostazioni di progetto libzbar.a quando costruire il mio file libzbar.a :

Architettura: standard (ARMv7, armv7s) $ (ARCHS_STANDARD_32_BIT)

Costruire architettura attivo solo in: Nessun

Architetture validi: armv7s ARMv7

E le mie impostazioni di progetto (per myapp) come:

Architettura: Standard (ARMv7, armv7s) $ (ARCHS_STANDARD_32_BIT)

Costruire architettura attivo solo in: Nessun

Architetture validi: ARMv7 armv7s

SDK Base: iOS6

iOS Deployment Targ et: iOS 5.0

E l'errore quando si cerca di costruire al simulatore:

ld: warning: ignoring file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a, missing required architecture i386 in file /Users/blah/iOS App/myapp/ZBarSDK/libzbar.a (2 slices) 
Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_ZBarReaderViewController", referenced from: 
     objc-class-ref in mycontroller.o 
    "_ZBarReaderControllerResults", referenced from: 
     -[mycontroller imagePickerController:didFinishPickingMediaWithInfo:] in mycontroller.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Ho provato tweaking le impostazioni del progetto libzbar.a (per esempio costruire un'architettura attiva impostata su "SÌ"), ma ciò non porta solo il funzionamento del simulatore o del dispositivo.

Il fatto che funzioni sul dispositivo ma non sul simulatore mi fa pensare che ci sia qualche strana architettura/impostazione del progetto a causare questo.

Qualsiasi aiuto molto apprezzato!

risposta

2

dubito che questa sia la risposta giusta ma ha funzionato per me, ho compilato il nuovo libzber.a utilizzando architetture: i386 armv7s ARMv7 ARMv6 in questo ordine è inoltre necessario specificare architetture valide come gli stessi valori. Ancora una volta questo è ciò che ha funzionato per me con una recente versione di cui avevo bisogno per uscire da A.S.A.P. Entrambi si trovano in Target -> Impostazioni di costruzione -> Architecure.

Nota: $ (ARCHS_STANDARD_32_BIT) deve essere rimosso dalle impostazioni.

1

Ho risolto un problema simile impostando l'architettura del simulatore iOS6 sotto OTHER_LDFLAGS in Destinazione-> Impostazioni di creazione.

ho dimenticato che avevo un diverso argomento di riga di comando per archituctures separati così ho dovuto indicare manualmente il simulatore

+0

come do u do che? –