FreeType库和“未定义参考FT_Init_FreeType”(FreeType library

2019-06-27 23:08发布

从PHP的到来,这是我用C / C ++初体验(这样下去容易对我)。 我下面这个教程编写使用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

有任何想法吗?

Answer 1:

这些都是链接错误。 如果他们包括与演示一个Makefile,你是关闭使用更好。 否则,你需要-L和-l选项添加到您的编译命令行所以编译器(实际上是连接器,它获取由编译器调用的幕后)知道在哪里可以找到FreeType库。

-L选项给出了路径到该库的代码存在。 例如

-L/usr/local/lib  

与-l选项给库的名称。 在缩短的形式指定使用-l选项命名的图书馆,那是你在前面和后面的名为“.a”假关闭“LIB”。 因此,举例来说,如果FreeType库存储在文件libfreetype.a,它会显示在-l选项为

-lfreetype

例如:

gcc render.c -I/usr/include/freetype2 -L/usr/local/lib -lfreetype


文章来源: FreeType library and “Undefined reference to FT_Init_FreeType”