3

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

然而,它给了我这个:

错误 2 错误 LNK2019:未解析的外部符号 _ imp _glBindTexture@8 在函数“public: void __thiscall Texture2D::Bind(unsigned int)”(?Bind@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* 函数调用链接失败,难道不是全部都必须失败吗?

4

2 回答 2

11

glBindTexture 是一个“核心”OpenGL 功能。此函数位于 opengl32.dll 中,因此只需将 opengl32.lib 添加到链接器输入即可。

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

于 2012-06-02T22:42:01.933 回答
0

您需要在链接器输入中包含该库。

对于 VS:

  1. 将库的文件放在解决方案的根文件夹中。(对于某些库,您通常不必这样做)
  2. 在 Visual Studios 菜单中,转到 Project --> [SolutionName] 属性。
  3. 将打开一个对话框。导航到配置属性 --> 链接器 --> 输入
  4. 在“附加依赖项”中添加库的名称。(可能是* .lib)
于 2012-06-02T22:47:03.573 回答