C++ 与';外部';关键词

C++ 与';外部';关键词,c++,visual-c++,linker-errors,extern,unresolved-external,C++,Visual C++,Linker Errors,Extern,Unresolved External,我在cpp文件中有一组全局变量和一个方法 int a; int b; int c; void DoStuff() { } 在头文件中,我用extern关键字显式声明了它们。我的问题是当我把头文件包含在另一个C++文件中时,我不能使用外部变量和方法。它给出了一个链接器错误,表示方法和变量的错误LNK2001:unresolved external symbol。我在这里做错了什么 PS:DoStuff()方法填充变量。所有头文件和cpp文件都位于同一项目文件夹中 谢谢大家! 必须包含.c

我在cpp文件中有一组全局变量和一个方法

int a;

int b;

int c;

void DoStuff()
{

}
在头文件中,我用extern关键字显式声明了它们。我的问题是当我把头文件包含在另一个C++文件中时,我不能使用外部变量和方法。它给出了一个链接器错误,表示方法和变量的错误LNK2001:unresolved external symbol。我在这里做错了什么

PS:DoStuff()方法填充变量。所有头文件和cpp文件都位于同一项目文件夹中


谢谢大家!

必须包含.cpp文件,该文件定义编译集中的
extern
变量和头中声明的函数。如果包含定义的.cpp文件未编译并链接到使用头文件声明的文件,则会出现链接器错误。

尝试此操作

在标题中定义这些变量,而不仅仅是声明它们

extern intx只是一个声明(不是定义)

简单例子

a.cpp

 int a,b,c; //definition

 void doStuff(){ 

 }
extern int a,b,c; //extern keyword is mandatory
void doStuff();   //extern keyword is optional because functions by default have external linkage

int main()
{

   doStuff();
}
b.cpp

 int a,b,c; //definition

 void doStuff(){ 

 }
extern int a,b,c; //extern keyword is mandatory
void doStuff();   //extern keyword is optional because functions by default have external linkage

int main()
{

   doStuff();
}

您确定要链接到与包含方法和变量的源文件相对应的对象文件吗?

因为您使用的是Visual C++(根据标记),所以在编译时,我只需确保您的所有文件都在同一个项目中。确保您正在构建项目,而不仅仅是构建文件

<>我怀疑这是不是这样,但是你也可能想检查源文件是编译成C还是C++,或者你可能会因为命名方案而遇到麻烦。