好的,所以我正在写一个小项目,没有什么复杂的,它只有几个类。
正如标题所暗示的,它使用 OpenGL。目前,还没有“真正的”主要功能。
我在使用 gl* 函数调用的任何地方都包含了glew.h,并添加到链接器输入glew32.lib。

然而,它给了我这个:



...以及许多其他与 OpenGL 纹理函数有关的 Unresolved external symbol 错误。但它并没有提示这个:

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* 函数调用链接失败,不是所有的都必须失败吗?

最佳答案

glBindTexture 是 OpenGL 的“核心”功能。此函数驻留在 opengl32.dll 中,因此只需将 opengl32.lib 添加到您的链接器输入。

glDrawElementsBaseVertex 和 glBindVertexArray 是扩展,GLEW 将它们定义为函数指针(在运行时完成动态后期绑定(bind)),因此没有“未解析的符号”错误。

关于c++ - 未解析的外部符号(OpenGL 和 C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10866474/

10-12 14:49