带有Freetype和Mingw的未定义引用



我有一个简单的程序:

#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 Freetypen");
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'

我该如何解决这个问题?

我很确定sed "s//usr///usr/i686-w64-mingw32//g"不会工作。也许sed "s?/usr/usr/i686-w64-mingw32??g" might work, but I recommend you usepkg-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

相关内容

  • 没有找到相关文章

最新更新