解析的外部符号(OpenGL和C ++)(Unresolved external symbol (O

2019-09-17 17:29发布

好了,我正在写一个小项目,没有什么复杂的,它只是有几个班。 正如标题所暗示的,它使用OpenGL。 目前,有没有“真正”的主要功能。 我已经包括glew.h无论我用GL *函数调用,并添加到链接器输入glew32.lib。

然而,它给了我这样的:

错误2错误LNK2019:解析外部符号_ 小鬼 _glBindTexture @ 8函数引用“市民:无效__thiscall的Texture2D ::绑定(unsigned int类型)”(?绑定@的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 *函数调用失败的连接,不会都要失败?

Answer 1:

glBindTexture是一个“核心”的OpenGL特性。 该功能位于OPENGL32.DLL,所以只需添加opengl32.lib到链接器输入。

glDrawElementsBaseVertex和glBindVertexArray是扩展和GLEW这些定义为函数指针(与动态后期绑定在运行时完成),这样就没有“未解析的符号”错误。



Answer 2:

你需要包括在接头输入库。

对于VS:

  1. 把库文件在解决方案的根文件夹。 (您可能没有为一些图书馆这样做一般)
  2. 在视觉工作室菜单转到项目 - > [解决方案名称]属性。
  3. 将打开一个对话框。 导航到配置属性 - >链接器 - >输入
  4. 在“附加依赖”添加库的名称。 (它很可能会* .LIB)


文章来源: Unresolved external symbol (OpenGL and c++)