首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeType库和“未定义的对FT_Init_FreeType的引用”

FreeType库和“未定义的对FT_Init_FreeType的引用”
EN

Stack Overflow用户
提问于 2012-09-07 13:07:36
回答 1查看 16.9K关注 0票数 7

我来自PHP,这是我第一次使用C/C++ (所以请不要这样做)。我遵循this tutorial,使用FreeType库编写了一个简单的脚本。下面的代码编译得很好:

代码语言:javascript
复制
#include <ft2build.h>
#include FT_FREETYPE_H

main() {
    FT_Library library;
    FT_Face face;
}

这告诉我,编译器可以很容易地使用FreeType库。然而,一旦我尝试使用任何方法,事情就会崩溃。例如,使用以下脚本:

代码语言:javascript
复制
#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");
    }
}

此脚本在编译时会产生以下错误:

代码语言:javascript
复制
#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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 13:11:23

这些都是链接错误。如果他们在演示中包含了Makefile,那么你最好使用它。否则,您需要在编译命令行中添加-L和-l选项,以便编译器(实际上是链接器,在后台由编译器调用)知道在哪里可以找到FreeType库。

-L选项提供库代码所在位置的路径。例如

代码语言:javascript
复制
-L/usr/local/lib  

-l选项给出了库的名称。使用-l选项命名的库是以缩写形式指定的,即在前面去掉"lib“,在后面去掉".a”。因此,例如,如果FreeType库存储在libfreetype.a文件中,那么它在-l选项中将显示为

代码语言:javascript
复制
-lfreetype

例如:

代码语言:javascript
复制
gcc render.c -I/usr/include/freetype2 -L/usr/local/lib -lfreetype
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12312034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档