链接器错误:_main 已在 *.obj 中定义

Ste*_*vić 5 c++ linker-errors visual-studio

以下代码结构:

数组堆栈.h

#ifndef ARRAY_STACK_H
#define ARRAY_STACK_H
#include "Array.h"
// class ArrayStack
#endif
Run Code Online (Sandbox Code Playgroud)

ArrayStack.cpp

#include "ArrayStack.h"
// ArrayStack's methods
Run Code Online (Sandbox Code Playgroud)

数组.h

#ifndef ARRAY_HEADER
#define ARRAY_HEADER
#include <iostream>
// class Array
#endif
Run Code Online (Sandbox Code Playgroud)

数组.cpp

#include "Array.h"
// Array's methods
Run Code Online (Sandbox Code Playgroud)

主程序

#include "ArrayStack.h"
int main() {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生这些错误:

LNK1169 找到一个或多个多重定义的符号

LNK2005 _main 已在 Array.obj 中定义

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

Tob*_*obi 4

该错误消息意味着在所有已编译的代码(*.obj 文件)中,链接器发现了多个main()函数。其中之一显然在 main.cpp 中。

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

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