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

时间:2015-12-04 06:38:00

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

以下代码结构:

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

     

LNK2005 _main已在Array.obj中定义

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

1 个答案:

答案 0 :(得分:2)

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

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

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