C++ 与';外部';关键词
我在cpp文件中有一组全局变量和一个方法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
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++,或者你可能会因为命名方案而遇到麻烦。