未解析的外部符号(OpenGL 和 c++)
Unresolved external symbol (OpenGL and c++)
好的,所以我正在写一个小项目,没什么复杂的,它只有几个类。正如标题所暗示的那样,它使用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* 函数调用链接失败,难道不是全部失败了吗?
glBindTexture是OpenGL的"核心"功能。此函数驻留在 opengl32.dll 中,因此只需将 opengl32.lib 添加到链接器输入中即可。
glDrawElementsBaseVertex 和 glBindVertexArray 是扩展,GLEW 将它们定义为函数指针(在运行时完成动态后期绑定),因此没有"未解决的符号"错误。
需要在链接器输入中包含库。
对于 VS:
- 将库的文件放在解决方案的根文件夹中。(对于某些库,通常可能不必执行此操作)
- 在"Visual Studios"菜单中,转到"项目"-->[解决方案名称]属性。
- 将打开一个对话框。 导航到"配置属性"-->链接器 -->输入
- 在"其他依赖项"中添加库的名称。(可能是 *.lib)
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 在 openGL 中多次绑定缓冲区
- opengl glBegin(GL_LINES) 和 glBegin(GL_POINT) 在 2D 中不可视化点矢量