我来自PHP,这是我第一次使用C/C++ (所以请不要这样做)。我遵循this tutorial,使用FreeType库编写了一个简单的脚本。下面的代码编译得很好:
#include <ft2build.h>
#include FT_FREETYPE_H
main() {
FT_Library library;
FT_Face face;
}这告诉我,编译器可以很容易地使用FreeType库。然而,一旦我尝试使用任何方法,事情就会崩溃。例如,使用以下脚本:
#include <ft2build.h>
#include FT_FREETYPE_H
main() {
int error;
FT_Library library;
error = FT_Init_FreeType(&library);
if (error) {}
FT_Face face;
error = FT_New_Face(library, "/usr/share/fonts/truetype/arial.ttf", 0, &face);
if (error == FT_Err_Unknown_File_Format) {
printf("Font format is unsupported");
} else if (error) {
prinft("Font file is missing or corrupted");
}
}此脚本在编译时会产生以下错误:
#gcc render.c -I/usr/include/freetype2
/tmp/cc95255i.o: In function `main':
render.c:(.text+0x10): undefined reference to `FT_Init_FreeType'
render.c:(.text+0x30): undefined reference to `FT_New_Face'
collect2: ld returned 1 exit status有什么想法吗?
发布于 2012-09-07 13:11:23
这些都是链接错误。如果他们在演示中包含了Makefile,那么你最好使用它。否则,您需要在编译命令行中添加-L和-l选项,以便编译器(实际上是链接器,在后台由编译器调用)知道在哪里可以找到FreeType库。
-L选项提供库代码所在位置的路径。例如
-L/usr/local/lib -l选项给出了库的名称。使用-l选项命名的库是以缩写形式指定的,即在前面去掉"lib“,在后面去掉".a”。因此,例如,如果FreeType库存储在libfreetype.a文件中,那么它在-l选项中将显示为
-lfreetype例如:
gcc render.c -I/usr/include/freetype2 -L/usr/local/lib -lfreetypehttps://stackoverflow.com/questions/12312034
复制相似问题