【发布时间】:2015-11-21 23:33:03
【问题描述】:
我正在尝试用 C 处理 id3 标签,所以我下载了 mplib 并安装了它。
我试图在 mplib.h 中调用这个函数,其中 __P 是一个宏
extern id3_tag_list* mp_get_tag_list_from_file __P((const char* path));
通过写入
example.c:
int main() {
char* pa = "R U MINE";
id3_tag_list* list = mp_get_tag_list_from_file(pa);
id3_tag *newTag = list->tag;
printf("tag %d\n", newTag->version);
return 0;
}
但是当我链接时,我得到一个错误:
example.o: In function `main':
example.c:(.text+0x27): undefined reference to `mp_get_tag_list_from_file'
collect2: error: ld returned 1 exit status
make: *** [example] Error 1
我的 makefile 看起来像这样
OBJECTS = example.o
target=example
misc=Makefile
cflags=-Wall -g -O0 -Werror -pedantic -std=c99
all: $(target)
$(target) : $(OBJECTS) $(misc)
gcc $(cflags) -o $(target) $(OBJECTS)
clean:
rm -f $(OBJECTS) $(target)
我在编译这个时遇到了麻烦。我认为问题在于我在将其链接到实际定义该函数的实际 mplib.c 文件时遇到问题,但我不确定如何准确执行此操作。我从http://mplib.sourceforge.net/ 获得了库,并使用“make”和“make install”安装了它。我应该手动将mplib.c 文件移动到某处吗?
【问题讨论】:
-
尝试将用于链接的库添加到
cflags:-l mplib -
似乎无法解决问题
-
我认为 nnn 是正确的,你没有链接库。在您的主要内容中,您也没有显示包含的标头,但是从您得到的错误中我猜想 mpilib.h 已包含在内。
标签: c linux gcc compiler-errors