2012-02-19 15 views
6

Estoy trabajando en MacOSX 10.7.2 y Xcode 4.2.1. He instalado libpng utilizando el puerto y que estaba tratando de cargar una imagen PNG en mi solicitud, pero me da errores de enlace:Error del enlazador con libpng bajo MacOSX

Undefined symbols for architecture x86_64: 
    "_png_create_read_struct", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_create_info_struct", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_destroy_read_struct", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_set_longjmp_fn", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_init_io", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_set_sig_bytes", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_read_png", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_get_IHDR", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_get_rowbytes", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
    "_png_get_rows", referenced from: 
     loadPngImage(char*, int&, int&, bool&, unsigned char**) in test.o 
ld: symbol(s) not found for architecture x86_64 

Incluí png.h en mi proyecto usando

#include "/usr/X11/include/png.h" 

libpng se basa en zlib, así he incluido -lz en "Otras banderas enlazadoras" pero nada ha cambiado.

¿Alguna sugerencia sobre cómo hacerlo funcionar?

+0

En caso de adivinar: parece que falta la versión de 64 bits. ¿Ha probado 'file' y' otool' en libpng? –

Respuesta

5

he resuelto con una instalación manual de libpng:

  • descarga la fuente de official web site
  • en la Terminal, ir en la carpeta descargada y lanzar

    cp ./scripts/makefile.darwin makefile 
    make 
    sudo make install 
    make clean 
    
  • si él doesn' t trabajo (como en mi caso) abra makefile con TextEdit (o equivalente) y cambie la línea

    ARCH="-arch i386 -arch x86_64"

    en

    ARCH=-arch x86_64

    (asumiendo, por supuesto, el sistema es de 64 bits).

Puede que no sea suficiente. Xcode aún no pudo encontrar la biblioteca. Lo resolví usando

cd /usr/local/lib 
sudo ln -s libpng15.dylib ./libpng15.15.dylib 

Eso hizo el truco. Ahora funciona bien.

+0

¡Brillante, gracias! – Arman

+0

¡También asegúrese de eliminar -ppc, eso funcionó para mí! – Roecrew

Cuestiones relacionadas