2012-06-02 23 views
3

好的,所以我正在寫一個小項目,沒什麼複雜的,它只有幾個類。正如標題所暗示的,它使用OpenGL。目前,沒有「真正的」主要功能。 我已經包括glew.h,無論我使用gl *函數調用,並添加到鏈接器輸入glew32.lib。無法解析的外部符號(OpenGL和C++)

然而,它給了我這樣的:

錯誤2錯誤LNK2019:解析外部符號 _ 小鬼 _glBindTexture @ 8函數引用「市民:無效__thiscall的Texture2D ::綁定(無符號整數) 「 (?綁定@的Texture2D @@ QAEXI @ Z)Texture.obj Licenta

...等無法解析的外部符號錯誤有關的OpenGL紋理功能的主機。但它並不會爲此抱怨:

glBindVertexArray(m_VAO); 
     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Buffers[INDEX_BUFFER]); 
     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(Indices[0]) * Indices.size(), &Indices[0], GL_STATIC_DRAW); 

或本:

glDrawElementsBaseVertex(GL_TRIANGLES, 
          m_Entries[i].NumIndices, 
          GL_UNSIGNED_INT, 
          (void*)(sizeof(unsigned int) * m_Entries[i].BaseIndex), 
          m_Entries[i].BaseVertex); 

那麼,這是怎麼回事?如果一個gl *函數調用失敗的鏈接,是不是都必須失敗?

+0

請不要將這些調用與_glew_中的定義對應嗎? –

回答

9

glBindTexture是一個「核心」OpenGL功能。該函數駐留在opengl32.dll中,因此只需將opengl32.lib添加到鏈接器輸入中即可。

glDrawElementsBaseVertex和glBindVertexArray是擴展,GLEW將它們定義爲函數指針(在運行時完成動態後期綁定),因此沒有「未解決的符號」錯誤。

+0

它的工作原理。你每天都會學到一件新事物。 –

0

您需要將庫包含在鏈接器輸入中。

對於VS:

  1. 把圖書館在解決方案的根文件夾中的文件。 (您可能不需要爲某些庫一般執行此操作)
  2. 在Visual Studios菜單中,轉至Project - > [SolutionName]屬性。
  3. 對話框將打開。導航到配置屬性 - >鏈接器 - >輸入
  4. 在「其他依賴項」添加庫的名稱。 (它可能是* .lib)