2008-11-14 32 views
26

He incluido en mi aplicación iphone y el código fuente estaba burlando el código de muestra de Moléculas proporcionado por Brad Larson, sin embargo, cuando construyo el proyecto, devuelve el error como a continuación. ¿Alguien puede indicarme si se trata de un problema de vinculación de la biblioteca o me falta algo más?error al importar zlib en iphone sdk

"_deflate", referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "_inflateEnd", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "inflateInit2", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_inflate", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_deflateEnd", 
referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "deflateInit2", referenced 
from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o ld: symbol(s) not found collect2: ld 
returned 1 exit status 
+1

¿Agregaste libz a tu proyecto? –

Respuesta

80

En la ficha de su destino Build Settings, desplácese hacia abajo hasta la sección Other Linker Flags y asegúrese de -lz está en el campo. Esto se vinculará con el zlib incorporado y tu error desaparecerá.

Después de cambiar los indicadores del enlazador, debe seleccionar Clean en el menú Product antes de volver a compilar.

lz screenshot

+1

sí, resuelve el problema gracias – issac

+4

Siento que la respuesta de Jason es un método más confiable. – Plumenator

+1

@Plumenator En la respuesta de Ben, está utilizando una libra que YA es parte de su aplicación. En la respuesta de Jason, está agregando una libz adicional a la aplicación. Es por eso que la respuesta de Ben es mejor, es más eficiente (sin ofender a Jason, por supuesto). – Jacksonkr

46

Añadir libz a su proyecto. Para ello, siga estos pasos en Xcode:

  1. abrir el proyecto, seleccione el objetivo del proyecto y luego haga clic en el icono azul proyecto de información sobre la barra de herramientas (o pulse ⌘I)
    Example 1
  2. Haga clic en el + botón en la esquina inferior izquierda de la pantalla para agregar una biblioteca, desplácese hacia abajo hasta la parte inferior de la lista de la biblioteca y seleccione libz.dylib; haga clic en el botón Agregar.
    Example 2
  3. Una vez que haya hecho clic en Agregar, verá que el nombre de la biblioteca aparece en su lista de Bibliotecas vinculadas. Ahora podrá construir su proyecto sin errores de enlace.
    Example 3

Usted puede usar este mismo método para añadir cualquier biblioteca de la lista. Si la biblioteca no aparece en la lista, entonces sabrá que no forma parte del SDK estándar de iPhone y es posible que necesite replantear su solución o crear la biblioteca estáticamente usted mismo y vincular su destino a eso (si es posible).

+1

Muy útil respuesta. Problema resuelto por esto. – Jyotsna

+2

-1 - si bien es una respuesta muy buena, libz.dylib ya no está disponible cuando agrega una biblioteca a su destino y no deben utilizarse de todos modos para las bibliotecas estándar. En su lugar, agregue '-lz' a sus indicadores de enlazador. –