GLEW链接问题找不到__imp_glGetIntegerv

Fat*_*sis 3 c++ windows opengl glew visual-studio-2015

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

因此,在尝试设置在新项目中使用的glew之前,我已经经历过这种牛仔竞技表演,但是现在我在项目中使用glew 2.0,它会产生链接错误。我刚刚在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在名称空间渲染器中声明并在此处定义的函数。与此相关的是,我仅致电glewInit(),就是这样。

产生的链接错误是:

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 
Run Code Online (Sandbox Code Playgroud)

普通的“未定义声明的函数”错误类型之间的区别是,这四个错误是唯一丢失的错误。由于他们附加了__imp_标记,通常表明他们希望链接动态库,所以有什么告诉我它们可能是生成文件中的错误?有人遇到过链接问题吗?

Fat*_*sis 5

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