2015-08-14 6 views
0

Я отлаживаю некоторое программное обеспечение на C++ и хочу немного изменить существующую функцию, чтобы она меняла значение конкретной переменной, используемой в другом месте программы.C++ LNK2001 & LNK1120 ошибки компиляции

функция в настоящее время определяется как так:

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 для вопросов об этих ошибках, но никто из них, похоже, не объяснил, почему я могу их получить. Они все, кажется, предполагают, что компилятор, возможно, ищет не в том месте, но если я отменил свои изменения, тогда компиляция кода без проблем, и я не сказал компилятору смотреть где-нибудь еще, когда создаю код с моими изменениями ...

ответ

0

void DataStore :: setEraseSelected (int);

Передача этой переменной

+0

Что это значит? – Quentin