【问题标题】:Undefined Reference With Freetype And Mingw使用 Freetype 和 Mingw 的未定义引用
【发布时间】:2021-11-18 22:13:37
【问题描述】:

我有一个简单的程序:

#include <GL/gl.h>
#include <GLFW/glfw3.h>
#include <cglm/cglm.h>
#include <ft2build.h>
#include FT_FREETYPE_H

int main(void){
    /* Initializing fonts  */
    FT_Library ft;
    if(FT_Init_FreeType(&ft)) {
        fprintf(stderr, "Failed initializing Freetype\n");
        return -1;
    }
    /* * * * * * * * * * * */

    return 0;
}

我使用的编译器:

i686-w64-mingw32-gcc game.c -lglfw3dll -lopengl32 -lfreetype -lmingw32 -lgdi32 -luser32 -lkernel32 -lpthread -lm $(pkg-config --cflags freetype2 | sed "s//usr///usr/i686-w64-mingw32//g") -O3 -o Game

链接程序的时候好像有错误:

/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld: /tmp/ccYBzSJN.o:main.c:(.text.startup+0x13e): undefined reference to `FT_Init_FreeType'

我该如何解决这个问题?

【问题讨论】:

    标签: linux mingw mingw32 freetype freetype2


    【解决方案1】:

    我很确定sed "s//usr///usr/i686-w64-mingw32//g" 不会工作。也许sed "s?/usr/usr/i686-w64-mingw32??g" might work, but I recommend you use pkg-config --define-prefix --cflags freetype2without sed, to letpkg-config`找出正确的路径。

    此外,您正在编译和链接一行,因此您还需要添加链接器标志 (pkg-config --define-prefix --libs freetype2)。

    所以试试这样的:

    i686-w64-mingw32-gcc game.c -lglfw3dll -lopengl32 -lfreetype -lmingw32 -lgdi32 -luser32 -lkernel32 -lpthread -lm $(pkg-config --define-prefix --cflags --libs freetype2) -O3 -o Game
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2020-06-27
      • 2016-10-06
      • 2014-02-04
      • 2012-10-06
      • 2014-10-23
      相关资源
      最近更新 更多