8

我正在使用 MacOSX 10.7.2 和 Xcode 4.2.1。我libpng使用端口安装并尝试在我的应用程序中加载 PNG 图像,但出现链接器错误:

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

我包含png.h在我的项目中使用

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

我知道libpng基于zlib,因此我已将其包含-lz在“其他链接器标志”中,但没有任何改变。

有关如何使其工作的任何建议?

4

1 回答 1

6

我通过手动安装解决了libpng

  • 从官网下载源码
  • 在终端中,进入下载的文件夹并启动

    cp ./scripts/makefile.darwin makefile
    make 
    sudo make install
    make clean
    
  • 如果它不起作用(在我的情况下)makefile用 TextEdit (或等效)打开并更改行

    ARCH="-arch i386 -arch x86_64"

    ARCH=-arch x86_64

    (当然,假设您的系统是 64 位的)。

这可能还不够。Xcode 仍然无法找到该库。我解决了使用

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

那成功了。现在它工作正常。

于 2012-02-19T23:59:33.853 回答