在函数中定义外部变量

问题描述 投票:0回答:1

所以我正在 learnopengl.com 上学习 OpenGL。为了使我的代码尽可能清晰,我决定将其分成不同的文件,并用头文件将它们连接起来。我在头文件中声明了一个外部变量shaderProgram,并在 setupShaders() 函数中定义了它。但是,当我运行代码(我使用的是 Visual Studio 2019)时,出现错误,表明该变量未定义。奇怪的是,我在同一个函数中使用这个变量,就在定义之后,它仍然不起作用。

//header.h
extern unsigned int shaderProgram;

//shader.cpp
void setupShaders(){
   shaderProgram = glCreateProgram();
   glAttachShader(shaderProgram, vertexShader); // error
}

显然,这是代码的一个很大的简化

c++ visual-studio-2019 extern lnk2001
1个回答
0
投票

您显示的代码根本不是“定义”变量。您已将其声明为extern,并且在setupShaders()

函数中为它
分配一个值,但实际上您并未为该变量定义
任何存储。您需要将其添加到您的 
.cpp 文件中,例如:
标题.h

extern unsigned int shaderProgram;

着色器.cpp
unsigned int shaderProgram; // <-- HERE

void setupShaders(){
   shaderProgram = glCreateProgram();
   glAttachShader(shaderProgram, vertexShader);
}


© www.soinside.com 2019 - 2024. All rights reserved.