【问题标题】:glload and LNK errors in VC++ EE 2010VC++ EE 2010 中的 glload 和 LNK 错误
【发布时间】:2025-12-04 13:25:01
【问题描述】:

我正在尝试使用非官方 OpenGL SDK 中的 glload,但出现 LNK 错误:

1>  LINK : C:\Users\T\documents\visual studio 2010\Projects\testi\Debug\testi.exe not found or not built by the last incremental link; performing full link
1>glloadD.lib(gll_gl_ext.obj) : error LNK2019: unresolved external symbol __imp__wglGetProcAddress@4 referenced in function _WinGetProcAddress
1>glloadD.lib(wgll_ext.obj) : error LNK2001: unresolved external symbol __imp__wglGetProcAddress@4 
1>C:\Users\T\documents\visual studio 2010\Projects\testi\Debug\testi.exe : fatal error LNK1120: 1 unresolved externals


#include <glload/gl_all.h>
#include <glload/gll.hpp>

void main()
{
    glload::LoadFunctions();
}

链接器/附加依赖:glloadD.lib 问题出在哪里?

编辑 1:

首先我使用 Premake 为 vs2010 生成构建文件。然后我建立了所有的图书馆。在我的项目中,我为这些库设置了附加包含目录、附加库目录和附加依赖项。我想从这个页面运行一个示例:link 但我忘记在加载 opengl 函数之前创建 OpenGL 上下文。我在这个项目中不需要窗口,所以我只调用 glutInit,但在 0x5bfed398 (msvcr100d.dll) 处出现未处理的异常

#include <glload/gl_all.h>
#include <glload/gll.hpp>
#include <freeglut/freeglut.h>

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glload::LoadFunctions();
}

编辑 2:

在 glload::LoadFunctions 之前调用 glutCreateWindow 似乎是必要的。以下代码有效:

#include <glload/gl_all.h>
#include <glload/gll.hpp>
#include <freeglut/freeglut.h>

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutCreateWindow("");
    glload::LoadFunctions();
}

【问题讨论】:

  • 我们需要更多的东西。就像对您如何构建所有内容,链接到哪些库等的完整说明一样。此外,即使要编译和链接,您的源代码也不会做任何事情,因为您无法加载 OpenGL 函数,直到您已创建 OpenGL 上下文。
  • 顺便说一句,当您发现自己问题的答案时,通常习惯将其写为问题的实际答案,而不是问题的附录。可以回答你自己的问题。 Stack Overflow 不是论坛。这是一个问答网站,所以我们喜欢有问题的答案。

标签: visual-studio-2010 opengl linker glload


【解决方案1】:

解决方案是在初始化 GlLoad 之前创建一个工作上下文。每次我使用 GLSDK 启动 OpenGL 项目时都会遇到这个问题。

【讨论】: