如何在 GLFW 3 中的源文件之间共享 window 上下文

How to share a window context between source files in GLFW 3

好的,我一直在尝试在不同的源文件之间共享一个 window 上下文,主要是我的主 c++ 文件和主游戏循环,它看起来像这样(精简),它是在 OpenGL 3.3 中制作的和 GLFW 3 使用 Code::Blocks 13.12。我正在尝试这样做以减少我个人文件的大小

每次我尝试编译时,我都会得到:

mutiple definitions of 'window'

在 mainLoop.cpp 文件中。

WINDOW.h

#ifndef WINDOW_H
#define WINDOW_H

//include glfw etc...

GLFWwindow* window;

#endif //WINDOW.h

mainLoop.cpp

//include glfw etc...

#include "WINDOW.h"

void mainLoop()
{
    do{
        //some code that uses 'window' context
    }while( glfwGetKey( window, GLFW_KEY_ESCAPE ) != GLFW_PRESS && glfwWindowShouldClose( window ) == 0 ); //<- "window" causing problems
}
//relevant cleanup

main.cpp

//include necessary headers (glfw, glu, glew, and others)

#include "WINDOW.h"

void mainLoop();

int main( void )
{
    //initialize opengl and whatnot.
    window = glfwCreateWindow( 512, 288, "NULL", NULL, NULL );
    glfwMakeContextCurrent( window );

    mainLoop();

}

我不确定为什么我不能以这种方式使用上下文,如果我的 "mainLoop" 代码本身在 main 中(使用 WINDOW.hpp),它就可以工作。 非常感谢帮助。

好的,答案比我最初想的要简单得多。我不必使用 GLFWwindow* window 作为全局变量,我只需要将 window 作为参数传递,例如:void mainLoop( GLFWwindow* window ); 现在 window 会正常生成了!

感谢@Leiaz 和@molbdnilo 对我的帮助,非常感谢!