Linker error: _main already defined in *.obj

Linker error: _main already defined in *.obj

代码结构如下:

ArrayStack.h

#ifndef ARRAY_STACK_H
#define ARRAY_STACK_H
#include "Array.h"
// class ArrayStack
#endif

ArrayStack.cpp

#include "ArrayStack.h"
// ArrayStack's methods

Array.h

#ifndef ARRAY_HEADER
#define ARRAY_HEADER
#include <iostream>
// class Array
#endif

Array.cpp

#include "Array.h"
// Array's methods

main.cpp

#include "ArrayStack.h"
int main() {
    return 0;
}

生成这些错误:

LNK1169 one or more multiply defined symbols found

LNK2005 _main already defined in Array.obj

这里有什么问题?请注意,Array.cpp在第一次包含在项目中时确实定义了int main() ,但不再有它(ArrayStack.cpp 也没有)。此外,当省略 main.cpp 中的 int main() 时,代码编译得很好...

错误信息的意思是在所有编译后的代码,*.obj文件中,链接器发现了不止一个main()函数。一个显然在 main.cpp.

如评论中所述,想到的第一个解决方案是通过某种方式删除 *.obj 文件(强制)重新编译。

如果这没有任何改变,请尝试从头开始单独重建您的解决方案。以 main.cpp 开头,不包含。然后在您确信不会出错的地方连续添加文件。也许在某些情况下你必须注释掉一些行才能使编译成为可能。