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