我真的不知道我在做什么错。我没有使用加载库,因此可以更好地控制代码。我正在使用Windows操作系统。
#include <gl/GL.h>
#include <windows.h>
typedef BOOL(WINAPI wglSwapInterval_t) (int interval);
static wglSwapInterval_t* wglSwapInterval;
#ifndef GLAPI
#define GLAPI extern
#endif
#ifndef APIENTRYP
#define APIENTRYP APIENTRY *
#endif
#define GL_VERTEX_SHADER 0x8B31
#define GL_FRAGMENT_SHADER 0x8B30
typedef GLuint(APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
PFNGLCREATEPROGRAMPROC glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");
错误:
(5): error C2086: 'wglSwapInterval_t (__stdcall *__stdcall wglSwapInterval)': redefinition
(5): note: see declaration of 'wglSwapInterval'
(19): error C2374: 'glCreateProgram': redefinition; multiple initialization
(19): note: see declaration of 'glCreateProgram'
答案 0 :(得分:1)
此类问题的常见原因是,在单个.h
文件中直接或间接(例如,包含在本身包含在当前文件中的另一个文件中)多次包含一个未经保护的.cpp
文件。
为避免此类问题,请始终将#ifndef
或#pragma once
作为include guard放在.h
文件中。