3

私の問題は次のような状況にあります。

file1.h

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

class XXX: 
{
....various things....
protected:
CGraphWnd graph_wnd_sensor1D;
}  

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 ...)

ここでgraph_wnd_sensor1Dには値があり、ShowWindowは機能します

ファイル2.h

extern CGraphWnd graph_wnd_sensor1D;
class YYY: 
{
void YYY::Init(){
graph_wnd_sensor1D.ShowWindow(SW_SHOW);
}
....various things....
}

ここで、initでは、graph_wnd_sensor1Dに前の情報と同じ情報がないため、アプリがクラッシュします。

ファイル2.cppで、graph_wnd_sensor1Dを使用したいと思います。しかし、視覚的な収量

CMyTabCtrl.obj : error LNK2001: external symbol unresolved "class CGraphWnd graph_wnd_sensor1D"
  • したがって、graph_wnd_sensor1Dをfile1で宣言されているグローバル変数にするという考え方です。どうすればこれを解決できますか?*
4

1 に答える 1

6

宣言しただけで、変数を定義していません。単一の実装ファイルに定義を追加します。

ファイル2.h

extern CGraphWnd graph_wnd_sensor1D; // declarations

ファイル2.cpp

CGraphWnd graph_wnd_sensor1D; // definition
于 2012-05-14T14:35:01.130 に答える