2017-01-14 35 views
0

虽然我正在编译我的opengl代码,我面临这个错误。如何删除它?错误未定义引用`FTExtrudeFont :: FTExtrudeFont(char const *)'

all: sample2D 

sample2D: Sample_GL3_2D.cpp glad.c 
     g++ -o sample2D Sample_GL3_2D.cpp glad.c -lGL -lglfw -ldl -std=c++11 

clean: 
     rm sample2D 

这是我的Makefile 的内容和我的渲染字体

const char* fontfile = "Monaco.ttf"; 
GL3Font.font = new FTExtrudeFont(fontfile); // 3D extrude style rendering 

if(GL3Font.font->Error()) 
{ 
    cout << "Error: Could not load font `" << fontfile << "'" << endl; 
    glfwTerminate(); 
    exit(EXIT_FAILURE); 
} 

// Create and compile our GLSL program from the font shaders 
fontProgramID = LoadShaders("fontrender.vert", "fontrender.frag"); 
GLint fontVertexCoordAttrib, fontVertexNormalAttrib, fontVertexOffsetUniform; 
fontVertexCoordAttrib = glGetAttribLocation(fontProgramID, "vertexPosition"); 
fontVertexNormalAttrib = glGetAttribLocation(fontProgramID, "vertexNormal"); 
fontVertexOffsetUniform = glGetUniformLocation(fontProgramID, "pen"); 
GL3Font.fontMatrixID = glGetUniformLocation(fontProgramID, "MVP"); 
GL3Font.fontColorID = glGetUniformLocation(fontProgramID, "fontColor"); 

GL3Font.font->ShaderLocations(fontVertexCoordAttrib, fontVertexNormalAttrib, fontVertexOffsetUniform); 
GL3Font.font->FaceSize(1); 
GL3Font.font->Depth(0); 
GL3Font.font->Outset(0, 0); 
GL3Font.font->CharMap(ft_encoding_unicode); 

回答

0

仰望FTExtrudeFont代码它似乎是在ftgl库 http://ftgl.sourceforge.net/docs/html/classFTExtrudeFont.html 但是你不链接,一个函数图书馆。所以你可能需要-lftgl(假设这是库的命名)。

根据安装库的位置(或者如果您自己创建了它),那么您可能还需要使用-L标志告诉链接器在哪里查找库,也就是说,您的编译行将类似于

g++ -o sample2D Sample_GL3_2D.cpp glad.c -L <path-to-dir-with-ftgl-library> -lftgl -lglfw -lGL -ldl -std=c++11 
+0

三江源但现在我面临的一个错误'符号查找错误:/usr/local/lib/libftgl.so.2:未定义的符号:glad_glGenTextures' – nike

+0

你明白的符号,库的概念和它们是如何解决?如果不是的话,我建议读一读。 lib之后的符号必须通过链接后的代码来解析,例如glfw使用GL,所以必须链接出现在它之前。你有的g ++系实际上是2个阶段;编译源代码,然后链接目标文件。 TBH我从来没有试过用源文件解决lib依赖问题,所以我会按照标准模式编译glad.c到一个库,然后在ftgl之后进行链接。 –

相关问题