Xcode无法识别TIFF功能

时间:2015-10-27 23:33:33

标签: c xcode compiler-errors libtiff

我一直在尝试运行使用tiffutils来处理TIFF图像的代码。我遇到了架构x86_64的旧的"未定义的符号,这已经在这里多次出现了。但是,没有一个线程有助于解决我的问题。错误描述如下:

Undefined symbols for architecture x86_64:
  "_TIFFClose", referenced from:
      _GetImageFromTiff in tiffutils.o
      _WriteImageToTiff in tiffutils.o
  "_TIFFGetField", referenced from:
      _GetImageFromTiff in tiffutils.o
  "_TIFFOpen", referenced from:
      _GetImageFromTiff in tiffutils.o
      _WriteImageToTiff in tiffutils.o
  "_TIFFReadScanline", referenced from:
      _GetImageFromTiff in tiffutils.o
  "_TIFFScanlineSize", referenced from:
      _GetImageFromTiff in tiffutils.o
  "_TIFFSetField", referenced from:
      _WriteImageToTiff in tiffutils.o
  "_TIFFWriteScanline", referenced from:
      _WriteImageToTiff in tiffutils.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

经过多次尝试并想在互联网上寻求解决方案,我意识到问题必定是Xcode无法检测到tiff库。编译器似乎抱怨没有识别tiff库中的一些非常核心的函数。我不明白它是如何可能的,因为我确实已经安装了它并且我在Xcode的Build Setting中包含了libtiff库。

我不知道还有什么可以做的,所以我希望你们能在这里帮助我。有什么建议吗?

**更多可能有用的信息(不确定我是否需要这一切,这个项目很久以前在Linux上编写,我试图在Mac OS上编译它):

(1)我的libtiff库位于:usr / local / libtiff-4.0.6 (2)我将它添加到我的目标然后构建设置 - >库搜索路径,然后单击右列并将库usr / local / libtiff-4.0.6添加到其中。 (3)我的项目Makefile如下所示:

# Makefile for creating shape-texture spaces

TIFFUTILS_DIR = ../../tiffutils

CC =        gcc

CPPFLAGS=   -O3 -m32 -I$(TIFFUTILS_DIR) -I/usr/include -Wall

LDFLAGS =   -m32 -L$(TIFFUTILS_DIR)/bin -L/usr/lib
LOADLIBES =     -ltiffutils -ltiff

vpath %.c ..

SRC2_C =    bimgalloc.c bimgio.c btof.c btol.c btos.c canny2.c \
       die.c fileutils.c filtsub.c fimgalloc.c fimgio.c freflect.c \
       ftob.c ftol.c ftos.c imgalloc.c limgalloc.c limgio.c ltob.c \
       ltof.c ltos.c nint.c simgalloc.c simgio.c stob.c stof.c stol.c \
       timgio.c

SRC2_O =    $(SRC2_C:.c=.o)

canny2: $(SRC2_O)

SRC_C = bimgalloc.c bimgio.c btof.c btol.c btos.c canny.c \
       die.c fileutils.c filtsub.c fimgalloc.c fimgio.c freflect.c \
       ftob.c ftol.c ftos.c imgalloc.c limgalloc.c limgio.c ltob.c \
       ltof.c ltos.c nint.c simgalloc.c simgio.c stob.c stof.c stol.c \
       timgio.c

SRC_O = $(SRC_C:.c=.o)

canny: $(SRC_O)

clean:
    rm *.o canny canny2

#
# EOF
#

(4)我还有一个如下所示的tiffutils Makefile:

LIB =       libtiffutils.a

CC =        gcc
ARFLAGS =   ursv
CPPFLAGS=   -I.. -Wall -O3 -m32

vpath %.c ..

LIB_TIFFUTILS_C = tiffutils.c
LIB_TIFFUTILS_O = $(LIB_TIFFUTILS_C:.c=.o)

all: libtiffutils

libtiffutils: $(LIB_TIFFUTILS_O)
    $(AR) $(ARFLAGS) $(LIB) $(LIB_TIFFUTILS_O)


clean:
    rm $(LIB) $(LIB_TIFFUTILS_O)

感谢您阅读本文!

2 个答案:

答案 0 :(得分:0)

在Xcode中,转到项目设置,常规选项卡。在嵌入式二进制文件会话下,添加您的库。希望有所帮助

答案 1 :(得分:0)

您的项目位于计算机上的哪个位置?

我希望它位于:

/home/<username>/<projectname>

你已经说过tiffutils位于:

/usr/local/libtiff-4.0.6/tiffutils

makefile中的相对路径说(BTW:为什么是相对路径?)

(逐步分解。)

/home/<username> leaves ../tiffutils/libtiffutils.

/home/tiffutils/libtiffutils.

这绝对不一样:

/usr/local/libtiff-4.0.6/tiffutils/libtiffutils.

因此,库的路径必须是绝对路径,如下所示:

/usr/local/libtiff-4.0.6/tiffutils