如果问题布局很奇怪,我很抱歉,这是我第一次问问题。我一周前开始学习c++,现在我知道如何用GLFW创建一个窗口,我想清理我的代码,使它更好。我试图将"创建窗口"的东西放在一个名为"窗口。cpp"的。cpp文件中,然后将其导入主文件。但是当我拿出GLFWCreateWindow函数时,它不识别交换缓冲区中的窗口名称"w_gill",窗口应该关闭和销毁窗口函数。有人能帮帮我吗?
下面是Main.cpp文件:
#include <iostream>
#include <Windows.h>
#include "window.cpp"
int main(){
do{
createWindow();
glfwSwapBuffers(w_gill);
glfwPollEvents();
} while (!glfwWindowShouldClose(w_gill));
glfwDestroyWindow(w_gill);
glfwTerminate();
return 0;
}
和windows .cpp文件:
#include <GLglew.h>
#include <GLFWglfw3.h>
int windowWidth = 1920 / 2;
int windowHeight = 1080 / 2;
int createWindow(){
if (!glfwInit())
{
glfwTerminate();
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_VERSION_MINOR, 4);
glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
GLFWwindow* w_gill;
w_gill = glfwCreateWindow(windowWidth, windowHeight, "Gillow", NULL, NULL);
if (!w_gill)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(w_gill);
glfwSetInputMode(w_gill, GLFW_STICKY_KEYS, GL_TRUE);
}
没关系,我明白了,我必须把
GLFWwindow* w_gill;
int createWindow();
放在main.cpp文件内,以便它们被链接。谢谢你的回复
您的问题与c中变量的"作用域"或生存期有关。w_gill
的作用域是其包含函数的局部,因此,在函数之外对该变量没有可见性。除了将createWindow()
函数移动到它自己的. cpp文件之外,您必须进行一些其他更改,因为即使它仍然在main.cpp
中,您仍然会遇到相同的问题。