带有extern的全局变量声明

djf*_*oud 3 c++ linker unresolved-external extern visual-studio

我的问题在于以下背景:

file1.h

#include "graphwnd.h"
#include "file2.h"

class XXX: 
{
....various things....
protected:
CGraphWnd graph_wnd_sensor1D;
}  
Run Code Online (Sandbox Code Playgroud)

file1.cpp

#include "file1.h"
(... various stuff ...)

void main(){
OnInitGraph(&graph_wnd_1_sensor2D, rect_1_sensor2D);
graph_wnd_sensor1D.ShowWindow(SW_HIDE);
myYYY.Init();
}
(... various stuff ...)
Run Code Online (Sandbox Code Playgroud)

这里graph_wnd_sensor1D有一个值,ShowWindow有效

档案2.h

extern CGraphWnd graph_wnd_sensor1D;
class YYY: 
{
void YYY::Init(){
graph_wnd_sensor1D.ShowWindow(SW_SHOW);
}
....various things....
}
Run Code Online (Sandbox Code Playgroud)

这里,在init中,应用程序崩溃,因为graph_wnd_sensor1D与前一个信息的信息不同.

在文件2.cpp中我想使用graph_wnd_sensor1D.但视觉效率

CMyTabCtrl.obj : error LNK2001: external symbol unresolved "class CGraphWnd graph_wnd_sensor1D"
Run Code Online (Sandbox Code Playgroud)
  • 所以我的想法是让graph_wnd_sensor1D成为一个在file1中声明的全局变量!我该怎么解决这个问题?*

Luc*_*ore 6

您只声明了,但没有定义变量.在单个实现文件中添加定义.

档案2.h

extern CGraphWnd graph_wnd_sensor1D; // declarations
Run Code Online (Sandbox Code Playgroud)

文件2.cpp

CGraphWnd graph_wnd_sensor1D; // definition
Run Code Online (Sandbox Code Playgroud)