2012-03-25 20 views
9

Estoy construyendo un proyecto de escáner de código iOS, usando ZBar SDK. Estoy intentando construir mi proyecto directamente desde la fuente de ZBar, en lugar de incluir la biblioteca estática libzbar.a.¿Cómo compilar ZBar SDK con el proyecto en lugar de usar la biblioteca estática?

He descargado la fuente ZBar que incluye el proyecto XCode para compilar libzbar.a. Intenté copiar todos los archivos fuente del proyecto, pero no funcionó. Sigo recibiendo errores de símbolos indefinidos.

¿Qué archivos fuente deben incluirse, teniendo en cuenta que solo necesito compatibilidad con iOS?

¿Se debe seguir estrictamente la estructura de carpetas para construir el proyecto?

¿Habrá alguna necesidad de configuraciones de compilación si incluyo los archivos de origen?

EDIT: Seguí la misma estructura de carpetas y la configuración de compilación utilizada en el proyecto XCode de libzbar. Logré construir la biblioteca, pero sigue fallando al enlazar. Me sale el error: ld: duplicate symbol _OBJC_METACLASS para todos los archivos fuente. He comprobado dos veces, no hay referencias a la biblioteca estática libzbar.a original en el proyecto o más de una ocurrencia de estos archivos fuente. Si elimino las referencias para ellos, el proyecto se compila correctamente, pero luego falla cuando se hace referencia a cualquier símbolo de la biblioteca. ¡Creo que todavía me estoy perdiendo algo!

+0

Zbar es un proyecto de código abierto, distribuido como una biblioteca estática solo para que sea más fácil de integrar, sin t porque los desarrolladores no quieren que las personas vean el código fuente. De hecho, si visita el sitio del proyecto, el enlace para descargar la fuente se encuentra justo debajo del enlace para descargar la biblioteca estática. – Vin

+0

¿Qué errores tienes? – rakeshNS

+0

@rakeshNS todos los errores faltan archivos de encabezado o símbolos no definidos. – Vin

Respuesta

3

He resuelto finalmente este problema. Aquí están los pasos que hice:

1) Copié los archivos fuente del proyecto a mi proyecto.

2) Se eliminó la dependencia de libzbar.a de mi proyecto.

3) Se agregó la ruta a la carpeta que contiene la fuente y los encabezados a la configuración de construcción Header Search Paths del proyecto.

4) Añadido el establecimiento al proyecto la siguiente estructura definida por el usuario:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
PREBINDING y
USE_HEADERMAP

+0

¿Dónde descargó el código fuente? ¿Qué clases necesito incluir? – Dejell

+0

@Olya el código fuente está disponible en http://sourceforge.net/projects/zbar/. Incluí todas las clases del código fuente. – Vin

0

Debe crear la biblioteca estática usted mismo desde el código fuente, luego agregar la biblioteca estática de salida a su proyecto, o vincular los proyectos y forzar una compilación de la biblioteca estática antes de que se construya su proyecto.

Después de descargar el archivo zip desde el repositorio Mercurial defecto y abrir el archivo en Xcode, haga clic en la parte de "EmbedReader" de la selección de objetivos cuadro desplegable y cambie a "zBarSDK"

Una vez que cambie a la zBarSDK, solo compila desde el menú del producto y deberías tener tu archivo de biblioteca estática ....

+0

Gracias por su respuesta, Lefteris, pero esa parte es bastante evidente. Planeo hacer algunos cambios importantes en el código y quiero que el código sea fácilmente mantenible por otros desarrolladores en el futuro. Cambiar el código directamente en el proyecto, si es necesario, parece ser una mejor opción para mí que abrir un proyecto por separado, realizar los cambios, compilar una biblioteca y luego volver a incluir en el proyecto principal. – Vin

-1

Utilicé antes ZXing lib y se integró bien. Se incluyó como proyecto y el proyecto principal tiene la dependencia de destino para construirlo antes del proyecto principal. Edité sus fuentes para mis necesidades y no tengo problemas para trabajar con ellas.

He usado este tutorial. Puede ser útil para tus necesidades también.

+0

Gracias por su respuesta, Alivig, pero de alguna manera zxing no se ajusta a mis requisitos. Tengo que usar solo zbar. – Vin

Cuestiones relacionadas