wglGetProcAddress is undefined
wglGetProcAddress is undefined
我正在学习OpenGL教程,但我一直在链接库。
#define GLEW_STATIC
#include <glew.h>
#include <glfw3.h>
#include <thread>
typedef void (*GENBUFFERS) (GLsizei, GLuint*);
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", nullptr, nullptr);
glfwMakeContextCurrent(window);
while (glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
GENBUFFERS glGenBuffers = (GENBUFFERS) wglGetProcAddress("glGenBuffers");
GLuint buffer;
glGenBuffers(1, &buffer);
glfwTerminate();
}
由于某些原因,函数wglGetProcAddress
未定义。这些是我链接的库:glew32.lib、glew32s.lib、glfw3.lib、opengl32.lib。
MSDN说wglGetProcAddress
包含在opengl32.lib中。我做错了什么?
错误1错误C3861:"wglGetProcAddress":找不到标识符e:\workspaces\visual studio\learningopengl1\learningopengl1\main.cpp 32 1 learningopengl1
2 IntelliSense:标识符";wglGetProcAddress";未定义e:\Workspaces\Visual Studio\LearningOpenGl1\LearningOpenGl1\main.cpp 34 41 LearningOpenGl1
这不是链接器错误,这是编译器错误,因此您链接的库在现阶段根本无关紧要。
您的编译器告诉您,它不知道wglGetProcAddress
,因为它从未看到它的声明。编译器也不应该知道GENBUFFERS
,因为该类型也没有在任何地方定义。在官方的glext.h
文件中,您要查找的类型称为PFNGLGENBUFFERS
。
如果您真的想手动使用wgl
API,那么您可能应该将GL/gl.h
与最新的glext.h
一起包含在内,并使用正确的类型名称。
对我来说,最大的问题是:你在这里到底想做什么?您包含了glew.h
,这是一个库,其唯一目的是为您执行GL函数指针查询。你所需要做的就是调用glewInit()
,就完成了(好吧,别忘了之前在核心配置文件中设置glewExperimental=GL_TRUE
,因为GLEW是坏的,如果没有它,核心配置文件就无法工作)。完全不需要手动处理wglGetProcAddress()
。
此外,您也在使用GLFW。因此,如果您想手动查询函数指针,最好使用GLFW对特定于平台的指针查询API的抽象,它将是glfwGetProcAddress()
,并且应该已经声明了——同样,不需要使用wglGetProcAddress()
。
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- Why is UINT32_MAX + 1 = 0?
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- 错误说"camera is undefined",但我确实定义了它
- 如何解决"identifier 'gets'/'clrscr' is undefined"问题?
- IsWindows10OrGreater is Undefined
- C++ SQL 连接"get_driver_instance(); is undefined "错误
- llvm InitializeNativeTarget() is undefined
- 使用结构体的简单"identifier 'xxx' is undefined"
- wglGetProcAddress is undefined
- cudaOccupancyMaxActiveBlocksPerMultiprocessor is undefined
- 包括 fstream,但"ifstream not found"和"identifier is undefined"
- Is std::vector::begin() - 1 undefined?
- WC_NO_BEST_FIT_CHARS is undefined?
- C++ ~ 在客户端中调用函数会给出错误:"identifier ____ is undefined"
- 访问子类中的"protected"数据时"Identifier is undefined"错误
- Visual Express : SDL_Image is undefined
- 如何修复简单C++应用程序中的"identifier is undefined"错误?