GLEW 链接问题找不到 __imp_glGetIntegerv

GLEW linking issues cannot find __imp_glGetIntegerv

注意:是的,我指定了 GLEW_STATIC。

因此,在尝试设置 glew 以用于新项目之前,我已经完成了这个 rodeo,但现在我在项目中使用 glew 2.0,它产生了 linking 错误。我刚刚在 linux 实例中生成了源代码并像这样使用它们。

#include "Renderer.h"

#include <windows.h>
#include "GL/glew.h"
#include "Logger.h"

void Renderer::init(void* windowHandle) {
    Logger logger("Renderer::init");

    GLenum result = glewInit();
    if (result != GLEW_OK) {
        LOG(logger) << "Failed to run glew init with error: " << result;
    }
}

这是我在命名空间渲染器中声明并在此处定义的函数。相关的是我只调用glewInit(),就是这样。

产生的 linking 错误是:

Error   LNK2019 unresolved external symbol __imp_glGetIntegerv referenced in function glewContextInit
Error   LNK2019 unresolved external symbol __imp_glGetString referenced in function glewContextInit
Error   LNK2019 unresolved external symbol __imp_wglGetCurrentDC referenced in function wglewInit
Error   LNK2019 unresolved external symbol __imp_wglGetProcAddress referenced in function wglewInit 

正常的区别,"no declared functions are defined"类型的错误,这四个是唯一缺少的。因为他们附加了 __imp_ 标签,通常表明他们希望在 link 中有一个动态库,所以有些东西告诉我他们可能在生成的文件中有错误? linking glew 是否有人遇到过这个问题?

当然,经过一个晚上的搜索,您会在 post 后 10 分钟找到答案。我已经有一段时间没有这样做了,所以我忘记了 win32 仍然要求您包含 opengl32.lib,因为它包含 glGetIntegerv 的版本(以及其他函数),它应该从 opengl 1.0 实现中使用 windows 包括,而不是像所有扩展一样从驱动程序中查询它们。