我一直在尝试运行使用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)
感谢您阅读本文!
答案 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