当部分代码放入另一个cpp文件时,标识符未定义



如果问题布局很奇怪,我很抱歉,这是我第一次问问题。我一周前开始学习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中,您仍然会遇到相同的问题。

最新更新