c ++ LNK2001& LNK1120编译错误

时间:2015-08-14 14:33:57

标签: c++ lnk2001 lnk

我正在调试一些C ++软件,并希望稍微修改一个现有函数,以便它改变程序中其他地方使用的特定变量的值。

该功能目前定义如下:

void DataStore::setEraseSelected(){
    ...
    // Function code here
    ...
}

目前,该功能正常工作,没有任何问题。但是,我现在想修改该函数,以便它将改变程序中其他地方使用的变量的值。为此,我尝试将变量作为参数传递给函数(我还更新了头文件以反映函数的更改),然后为函数内部的变量赋值:

void DataStore::setEraseSelected(toAMS::DataMessage statusMsg){
    ...
    // Function code here
    ...
    statusMsg.CODE_ERASE = Types::Activated;
    ...
}

如前所述,我已将声明添加到头文件中,因此它现在具有带参数的函数声明,以及没有参数的函数声明:

void DataStore::setEraseSelected(toAMS::DataMessage statusMsg);

但是当我尝试构建代码(使用Visual Studio 2010)时,我得到以下两个编译错误:

  

错误LNK2001:未解析的外部符号" public void_thiscall DataStore :: setEraseSelected(void)" (?setEraseSelected @ DataStore :: QAEXXZ)

     

错误LNK1120:1个未解析的外部

第一个错误突出显示项目.obj文件,我尝试删除并重新构建,但得到相同的错误,第二个突出显示项目.exe文件,我也尝试删除并重新构建,但获取同样的错误。

任何人都有任何想法?我已经看过SO有关这些错误的问题,但似乎没有一个清楚地解释我为什么会得到这些错误。他们似乎都暗示编译器可能在错误的位置,但如果我撤消我的更改,那么代码编译没有任何问题,并且我没有告诉编译器在构建代码时使用其他任何地方我的改变......

1 个答案:

答案 0 :(得分:0)

void DataStore :: setEraseSelected(int);

传递该变量