opengl - 无法在 DLL 'glCreateShader' 中找到名为 'opengl32.dll' 的入口点

标签 opengl

我正在使用 OpenGL。
道绑定(bind)。
XP Pro 64。
VB.NET 中的 VS 2008
我已经构建了数十个简单的工具和测试应用程序,甚至还有 2 个使用 Opengl 进行渲染的大型应用程序。

为什么我在运行时只在一个项目中看到这一点?它构建时没有错误......这对于此类事情来说是正常的。问题是,我正在努力的这个灵魂正在崩溃。

Unable to find an entry point named 'glCreateShader' in DLL 'opengl32.dll'.

我尝试过更改 IDE 中的各种设置(但它可以与其他代码配合使用,所以这看起来很愚蠢!)

我尝试替换 opengl32.dll 但是..那么构建的解决方案将无法运行。

1) 这不是 opengl32.dll(它在其他版本中工作正常)
2) VS2008 中的设置与我构建的任何其他 OpenGL 应用程序相同。
3)我已经查看了代码几个小时,甚至还搜索了变量名称是否以某种方式意外使用。我看不到任何可能导致此问题的因素。
4)是的..我正在编译到x86(Tao不会在64位中运行)..正如我提到的..到目前为止我还没有遇到任何问题。

这是抗议的路线:

    vertexObject = Gl.glCreateShader(Gl.GL_VERTEX_SHADER)

最佳答案

好的,伙计们...我发现了问题。

如果并且我不确定除 XP Pro 64 之外的所有 Win 版本上都是如此...

将屏幕更改为全尺寸会导致 Tai 失去轴承。

摘自Tao类中的文本:

此类包含 2.1 规范中定义的所有 OpenGL 枚举和函数。官方 .spec 文件可以在以下位置找到:http://opengl.org/registry/ 。 我们依靠静态初始化来获取 OpenGL 函数的入口点。请确保在调用任何 OpenGL 函数之前,相关线程中已存在有效的 OpenGL 上下文(GLUT、SDL 或 GLFW 等工具包将自动处理上下文初始化过程)。如果没有有效的 OpenGL 上下文,我们将只能检索静态导出的入口点(通常对应于 Windows 下的 OpenGL 版本 1.1、Linux 下的 1.3 和 Windows Vista 下的 1.4),并且需要手动加载扩展方法。*

如果您希望对扩展加载有更多控制,您可以使用 ReloadFunctions 或 ReloadFunction 方法来手动强制初始化 OpenGL 入口点。无论何时您都应该调用 ReloadFunctions 方法。更改现有的视觉或像素格式。当您更改与窗口关联的颜色/模板/深度缓冲区(但可能不是分辨率)时,通常会发生这种情况。这在 Linux/MacOS 下可能是必需的,也可能不是必需的,但对于 Windows 通常是必需的。

我确定以上内容是Tao 的(c)..

我很抱歉,如果我听起来脾气暴躁..我是:(

无论如何..我需要添加这个....

Gl.ReloadFunctions()

...在我设置设备上下文之后。

所以这是现在有效的顺序:

    If Not (Wgl.wglMakeCurrent(ghDC, hRC)) Then
        MessageBox.Show("Unable to make rendering context current")
        End
    End If
    Glut.glutInit()
    Glut.glutInitDisplayMode(GLUT_RGBA Or GLUT_DOUBLE)
    Gl.ReloadFunctions() 'New Line that reloads the extensions. 
    build_shaders() ' where shaders are created and complied

所以你已经拥有它了:)

再次感谢大家!

关于opengl - 无法在 DLL 'glCreateShader' 中找到名为 'opengl32.dll' 的入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561870/

相关文章:

c++ - 我如何有效地处理 OpenGL 中的大量逐顶点属性?

opengl - 我选择的 GLFW_SAMPLES 实际上有什么作用?

OpenGL优化天空盒渲染

linux - 我可以强制编译器将我的共享库也放入二进制文件中吗?

c++ - OPENGL:使用 VBO 的方形类

opengl - DerelictGL.reload() 上的 Derelict3 SDL2 和 OpenGL 奇怪的 SIGSEGV

c++ - OpenGL 中的快速文本渲染

c++ - 未显示 OpenGl 立方体

c++ - 如何修复依赖于模板参数的 'there are no arguments to ' glGenVertexArrays ...' C++ 中的错误

optimization - 如何使用 SFML 更快地渲染 400 多个多边形