2017-01-14 33 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之後進行鏈接。 –

相關問題