2012-03-25 8 views
9

Ich baue ein iOS, Code-Scanner-Projekt mit ZBar SDK. Ich versuche, mein Projekt direkt aus der Quelle von ZBar zu erstellen, anstatt die statische Bibliothek libzbar.a einzuschließen.Wie baue ich ZBar SDK mit dem Projekt anstelle der statischen Bibliothek?

Ich habe die ZBar-Quelle heruntergeladen, die das XCode-Projekt enthält, um libzbar.a zu erstellen. Ich habe versucht, alle Quelldateien aus dem Projekt zu kopieren, aber es hat nicht funktioniert. Ich bekomme immer wieder undefinierte Symbolfehler.

Welche Quelldateien sollten enthalten sein, wenn man bedenkt, dass ich nur iOS unterstützen muss?

Soll die Ordnerstruktur strikt befolgt werden, um das Projekt zu erstellen?

Benötigen Sie Build-Einstellungen, wenn ich die Quelldateien direkt einschließe?

EDIT: Ich folgte der gleichen Ordnerstruktur und Build-Einstellungen im XCode-Projekt von libzbar verwendet. Ich habe es geschafft, die Bibliothek zu erstellen, aber es scheitert immer noch während der Verknüpfung. Ich erhalte den Fehler: ld: duplicate symbol _OBJC_METACLASS für alle Quelldateien. Ich habe überprüft, gibt es keine Verweise auf die ursprüngliche libzbar.a statische Bibliothek im Projekt oder mehr als ein Vorkommen dieser Quelldateien. Wenn ich die Referenzen für sie entferne, wird das Projekt ordnungsgemäß erstellt, schlägt aber fehl, wenn auf ein Symbol aus der Bibliothek verwiesen wird. Ich glaube, mir fehlt noch etwas !!

+0

ZBar ist ein Open-Source-Projekt, als statische Bibliothek verteilt, nur um die Integration zu erleichtern, nein t weil Entwickler nicht möchten, dass Benutzer den Quellcode sehen. In der Tat, wenn Sie durch die Projektseite gehen, ist der Link zum Herunterladen der Quelle direkt unter dem Link zum Herunterladen der statischen Bibliothek. – Vin

+0

Welche Fehler haben Sie? – rakeshNS

+0

@rakeshNS alle Fehler fehlen entweder Header-Dateien oder undefinierte Symbole. – Vin

Antwort

3

Ich habe dieses Problem endlich gelöst. Hier sind die Schritte, die ich gemacht habe:

1) Kopierte die Quelldateien des Projekts in mein Projekt.

2) Die Abhängigkeit libzbar.a von meinem Projekt wurde entfernt.

3) Der Pfad zum Ordner, der die Quelle und die Header enthält, wurde zur Header Search Paths Build-Einstellung des Projekts hinzugefügt.

4) addierten folgenden Anwender definiert build zur Projekteinstellung:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
Vorbindung und
USE_HEADERMAP

+0

Wo haben Sie den Quellcode heruntergeladen? Welche Klassen muss ich aufnehmen? – Dejell

+0

@ Odelya der Quellcode ist verfügbar unter http://sourceforge.net/projects/zbar/. Ich habe alle Klassen aus dem Quellcode enthalten. – Vin

0

Sie sollten die statische Bibliothek selbst aus dem Quellcode erstellen, dann die statische Ausgabebibliothek zu Ihrem Projekt hinzufügen oder die Projekte verknüpfen und ein Build der statischen Bibliothek erzwingen, bevor Ihr Projekt erstellt wird.

Nach der Zip-Datei aus dem Standard-Mercurial-Repository herunterladen und die Datei in Xcode öffnen, klicken Sie auf den „EmbedReader“ Teil der Zielauswahldropdownfeld und wechseln Sie zu „zBarSDK“

Sobald Sie auf den Schalter ZBarSDK, einfach aus dem Produktmenü erstellen und Sie sollten Ihre statische Bibliotheksdatei haben ....

+0

Danke für deine Antwort Lefteris aber dieser Teil ist ziemlich offensichtlich. Ich plane, einige wichtige Änderungen im Code vorzunehmen und möchte, dass der Code in Zukunft von anderen Entwicklern leicht gewartet werden kann. Wenn ich den Code direkt im Projekt ändere, scheint mir eine bessere Option zu sein, als ein separates Projekt zu öffnen, Änderungen vorzunehmen, eine Bibliothek zu erstellen und dann wieder im Hauptprojekt einzubinden. – Vin

-1

Ich habe ZXing Lib zuvor verwendet und es gut integriert. Es wurde als ein Projekt aufgenommen und Hauptprojekt hat Zielabhängigkeit, um es vor Hauptprojekt zu bauen. Ich habe die Quellen für meine Bedürfnisse bearbeitet und habe keine Probleme damit zu arbeiten.

Ich benutzte diese tutorial. Es kann auch für Ihre Bedürfnisse hilfreich sein.

+0

Danke für deine Antwort Alivig aber irgendwie passt Zxing nicht zu meinen Anforderungen. Ich muss nur zbar verwenden. – Vin

Verwandte Themen