C++ C+中的外部+;:对于extern VarX变量::错误LNK2001:未解析的外部符号;无符号整数VarX“;(?VarX@@3IA)

C++ C+中的外部+;:对于extern VarX变量::错误LNK2001:未解析的外部符号;无符号整数VarX“;(?VarX@@3IA),c++,visual-c++,linker,linker-errors,extern,C++,Visual C++,Linker,Linker Errors,Extern,作为我在stackoverflow上一个问题的继续: 在我的C++代码中,我想在文件“B”中使用变量“VARX”,而实际上在另一个文件“A”中修改了这个变量。 所以我看了一下下面的链接&使用了外部概念 错误LNK2001:未解析的外部符号“unsigned int” VarX“(?VarX@@3IA) 我的设想如下: File1.h extern unsigned int VarX; File2.cpp #include File1.h VarX = 101; File3.cpp #inc

作为我在stackoverflow上一个问题的继续: 在我的C++代码中,我想在文件“B”中使用变量“VARX”,而实际上在另一个文件“A”中修改了这个变量。 所以我看了一下下面的链接&使用了外部概念

错误LNK2001:未解析的外部符号“unsigned int” VarX“(?VarX@@3IA)

我的设想如下:

File1.h
extern unsigned int VarX;

File2.cpp
#include File1.h
VarX = 101;

File3.cpp
#include File1.h
unsigned int temp = VarX;
IMP注意:在头文件File1.h中,除了外部定义外,还有许多其他的结构定义和RDE定义。

有人能帮我吗。如何读取在另一个文件File3.cpp中的File2.cpp中修改的VarX值

您应该有File1.cpp 内容如下:

unsigned int VarX = 0;
您应该有File1.cpp 内容如下:

unsigned int VarX = 0;

您必须在全局范围内定义
VarX
,我假设您现在没有这样做,否则它甚至无法编译:

//File2.cpp
#include "File1.h"
unsigned int VarX = 101;  //this has to be outside any code block or namespace
                          //or class... 

您必须在全局范围内定义
VarX
,我假设您现在没有这样做,否则它甚至无法编译:

//File2.cpp
#include "File1.h"
unsigned int VarX = 101;  //this has to be outside any code block or namespace
                          //or class... 

VarX=101作为声明或初始化无效。这是您的实际代码吗?
VarX=101作为声明或初始化无效。这是你的真实代码吗?太好了。成功了。:)谢谢。堆垛溢出的岩石。但我有一个疑问。为什么我只需要在File2.cpp中声明VarX&为什么我在File3.cpp中没有得到任何这样的错误,而我使用的变量“VarX”是在File2.cpp中分配的?你能澄清我的疑问吗?谢谢:)@codeLover,因为这就是一条定义规则的含义。在本例中,只定义一次变量,
File2.cpp
extern
声明仅表示“此变量在某个地方定义,您可以使用它。”好的,谢谢。我想你告诉我在所有函数、类等之外定义变量(在File2.cpp的全局范围内),因为它在头文件中被声明为extern&我们也希望在其他文件中使用这个定义。非常感谢你提供的信息:)太好了。成功了。:)谢谢。堆垛溢出的岩石。但我有一个疑问。为什么我只需要在File2.cpp中声明VarX&为什么我在File3.cpp中没有得到任何这样的错误,而我使用的变量“VarX”是在File2.cpp中分配的?你能澄清我的疑问吗?谢谢:)@codeLover,因为这就是一条定义规则的含义。在本例中,只定义一次变量,
File2.cpp
extern
声明仅表示“此变量在某个地方定义,您可以使用它。”好的,谢谢。我想你告诉我在所有函数、类等之外定义变量(在File2.cpp的全局范围内),因为它在头文件中被声明为extern&我们也希望在其他文件中使用这个定义。非常感谢您提供的信息:)