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

Linker error: _main already defined in *.obj

本文关键字:定义 main obj 错误 已在 链接      更新时间:2023-10-16

以下代码结构:

ArrayStack.h

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

ArrayStack.pp

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

数组.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找到一个或多个多重定义符号

LNK2005已在Array.obj 中定义(_main)

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

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

如注释中所述,脑海中出现的第一个解决方案是通过以某种方式删除*.obj文件来(强制)重新编译。

如果这不会改变任何事情,请尝试从头开始单独重建解决方案。从main.cpp开始,不包含include。然后依次添加您确信不会出错的文件。在某些情况下,您可能需要注释掉一些行,以使编译成为可能。