2012-03-25 8 views
9

Sto costruendo un progetto iOS, scanner di codici utilizzando ZBar SDK. Sto cercando di costruire il mio progetto direttamente dalla sorgente di ZBar, piuttosto che includere la libreria statica libzbar.a.Come creare ZBar SDK con il progetto invece di utilizzare la libreria statica?

Ho scaricato il sorgente ZBar che include il progetto XCode per creare libzbar.a. Ho provato a copiare tutti i file sorgente dal progetto ma non ha funzionato. Continuo a ricevere errori di simboli non definiti.

Quali file di origine devono essere inclusi, considerando che devo supportare solo iOS?

Se la struttura della cartella deve essere strettamente seguita per creare il progetto?

Ci sarebbe bisogno di impostazioni di compilazione se includo direttamente i file sorgente?

MODIFICA: Ho seguito la stessa struttura di cartelle e le impostazioni di compilazione utilizzate nel progetto XCode di libzbar. Sono riuscito a creare la libreria, ma continua a fallire durante il collegamento. Ho ricevuto l'errore: ld: duplicate symbol _OBJC_METACLASS per tutti i file di origine. Ho controllato due volte, non ci sono riferimenti alla libreria statica libzbar.a originale nel progetto o più di un'occorrenza di questi file sorgente. Se rimuovo i riferimenti per loro, il progetto si sviluppa bene, ma poi fallisce ogni volta che viene fatto riferimento a qualsiasi simbolo della libreria. Penso che mi manchi ancora qualcosa !!

+0

Zbar è un progetto open source, distribuito come libreria statica solo per renderlo più facile da integrare, no t perché gli sviluppatori non vogliono che le persone vedano il codice sorgente. Infatti se si passa attraverso il sito del progetto, il link per scaricare l'origine è appena sotto il link per scaricare la libreria statica. – Vin

+0

Quali errori hai ottenuto? – rakeshNS

+0

@rakeshNS tutti gli errori mancano di file di intestazione o simboli non definiti. – Vin

risposta

3

Ho finalmente risolto questo problema. Ecco i passaggi che ho seguito:

1) Copiato i file sorgente del progetto nel mio progetto.

2) Rimossa la dipendenza di libzbar.a dal mio progetto.

3) Aggiunto il percorso della cartella contenente l'origine e le intestazioni all'impostazione di build Header Search Paths del progetto.

4) Aggiunto impostazione al progetto il seguente accumulo definito dall'utente:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
prebinding e
USE_HEADERMAP

+0

Dove hai scaricato il codice sorgente? quali classi devo includere? – Dejell

+0

@Odelya il codice sorgente è disponibile su http://sourceforge.net/projects/zbar/. Ho incluso tutte le classi dal codice sorgente. – Vin

0

È necessario creare la libreria statica autonomamente dal codice sorgente, quindi aggiungere la libreria statica di output al progetto o collegare i progetti e forzare una generazione della libreria statica prima che il progetto venga creato.

Dopo aver scaricato il file zip dal repository predefinito Mercurial e aprire il file in Xcode, clicca sulla parte "EmbedReader" della selezione del target casella a discesa e passare alla "zBarSDK"

Una volta che si passa al zBarSDK, basta compilare dal menu del prodotto e si dovrebbe avere il file della libreria statica ....

+0

Grazie per la tua risposta Lefteris ma quella parte è abbastanza evidente. Ho intenzione di fare alcuni importanti cambiamenti nel codice e voglio che il codice sia facilmente gestibile da altri sviluppatori in futuro. Cambiare il codice direttamente nel progetto, se necessario, sembra essere un'opzione migliore per me che aprire un progetto separato, apportare le modifiche, compilare una libreria e quindi includere di nuovo nel progetto principale. – Vin

-1

Ho usato ZXing lib prima e si integrava bene. È stato incluso come progetto e il progetto principale ha una dipendenza da target per crearlo prima del progetto principale. Ho modificato le sue fonti per i miei bisogni e non ho problemi a lavorarci.

Ho usato questo tutorial. Può essere utile anche per le tue esigenze.

+0

Grazie per la tua risposta Alivig ma in qualche modo zxing non soddisfa le mie esigenze. Devo usare solo zbar. – Vin

Problemi correlati