尝试使用其他类

时间:2015-07-24 01:47:20

标签: c++ visual-studio-2010 mfc linker-errors extern

我对c ++很陌生,这个错误一直在我的脑海中。基本上我有一个名为 PvSimpleUISampleDlg 的类,它是一个显示和连接FLIR热像仪的GUI。在DoDataExchange方法中,我有一行将IDC_IP_EDIT与mIPEdit链接,该行在类的其他地方使用。

//PvSimpleUISampleDlg.cpp
void PvSimpleUISampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_IP_EDIT, mIPEdit);
}

我创建了一个名为 SettingsDlg 的新对话框类,当我单击 PvSimpleUISampleDlg 类中的按钮并且我想在该对话框中使用相同的mIPEdit变量时,该类会打开所以GUI的每个部分的数据都是相同的。所以我进入 PvSimpleUISampleDlg.h 文件并将extern放在mIPEdit减速前面,以便其他类可以看到它。

//PvSimpleUISampleDlg.h
extern CEdit mIPEdit;

现在在 SettingsDlg.cpp 文件中,我将相同的行放在自己的DoDataExchange方法中,并且确定它识别了mIPEdit变量。

//SettingsDlg.cpp
void SettingsDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_IP_EDIT, mIPEdit);
}

但是,当我现在构建解决方案时,我收到错误

1>PvSimpleUISampleDlg.obj : error LNK2001: unresolved external symbol "class CEdit mIPEdit" (?mIPEdit@@3VCEdit@@A)
1>SettingsDlg.obj : error LNK2001: unresolved external symbol "class CEdit mIPEdit" (?mIPEdit@@3VCEdit@@A)
1>D:\FLIR Project\FLIR Project\PvSimpleUISample\Debug\PvSimpleUISample_Dbg.exe : fatal error LNK1120: 1 unresolved externals

我已在 SettingsDlg.cpp SettingsDlg.h 文件中加入 PvSimpleUISampleDlg.h 文件,我所做的就是复制一条线。我已经阅读了很多问类似问题的问题,但我仍然不理解,因为答案是“你需要将它链接到两个项目”或“你需要在项目中包含库”我添加了两个< strong> SettingsDlg 文件到项目,我只使用一个项目。所有相应的库都应链接到项目,因为解决方案正在构建正常,只有在我添加该行时才会出现错误。任何帮助/建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

据我了解,

 extern CEdit mIPEdit; 

这是宣言,而不是定义。 您仍然必须在某个.cpp文件中定义它的定义。该.cpp文件必须编译并链接到使用该声明的两个.cpp文件的目标文件。某些.cpp中的相应定义如下所示:

CEdit mIPEdit;