Я искал здесь и нашел этот вопрос много раз, но автор обычно не представил пример кода, я столкнулся с этой проблемой сегодня, и я не совсем уверен, как это исправить.Ошибка Linker LNK2005
1 из них bool Init([email protected]@A_NA) already defined in Client.obj
. Вот часть моего кода для Client.cpp, Main.cpp и Main.h.
client.cpp
#include "stdafx.h"
#include "Main.h"
// the rest of the code doesn't have anything to do with this error..
main.h
#include "stdafx.h"
bool Init;
// the rest of the code doesn't have anything to do with this error..
main.cpp
#include "stdafx.h"
#include "Main.h"
int main()
{
Init = false;
return 0;
}
Лучше иметь его в заголовке и определять в одном файле cpp, если вы должны использовать глобальные переменные. –
@RetiredNinja Тем не менее, это будет мешать другим глобальным 'Init', ваш подход в целом правильный, но OP имеет клиентскую библиотеку, которая уже определила' Init'. –
Я не вижу, что он вообще использует библиотеку. У него явно есть два файла cpp и переменная, объявленная в заголовке, что вызывает множественную ошибку определения. Если вы сделаете его статическим, ошибка исчезнет, но каждый файл cpp будет иметь другую переменную. Если вы extern его и определить его в одном месте, то оба имеют одну и ту же переменную. –