链接器LNK2005错误

时间:2014-12-30 04:21:58

标签: c++ visual-studio-2010 linker

我在这里搜索并发现了很多次这个问题,但作者通常没有提供代码示例,我今天遇到了这个问题而且我不太确定如何修复它。 / p>

其中一个错误列表bool Init(?@@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;
}

1 个答案:

答案 0 :(得分:2)

#include "Main.h"您已定义bool Init;,因此每次加入Main.h时,您都会重新定义Init。如果你使Init静态,

static bool Init;

此处Init将具有页面级范围,您的代码应该可以正常工作。

或者更好的是,您在Init

中设置了Math.h extern
extern bool Init;

然后在.cpp文件中定义它,这样你就会有多个声明,但只有一个定义。