以下代码结构:
ArrayStack.h
#ifndef ARRAY_STACK_H
#define ARRAY_STACK_H
#include "Array.h"
// class ArrayStack
#endifArrayStack.cpp
#include "ArrayStack.h"
// ArrayStack's methodsArray.h
#ifndef ARRAY_HEADER
#define ARRAY_HEADER
#include <iostream>
// class Array
#endifArray.cpp
#include "Array.h"
// Array's methodsmain.cpp
#include "ArrayStack.h"
int main() {
return 0;
}生成以下错误:
找到一个或多个已定义的LNK1169符号 LNK2005 _main已经在Array.obj中定义
这里有什么问题?请注意,当Array.cpp第一次被包含在项目中时,Array.cpp本身就已经定义了int main(),但是现在已经不再有int main()了(ArrayStack.cpp也没有)。此外,当省略int main() in main.cpp时,代码编译得很好.
发布于 2015-12-04 08:28:40
错误消息意味着在所有已编译的代码、*.obj文件中,链接器会找到多个main()函数。其中一个明显在main.cpp中。
正如注释中提到的,想到的第一个解决方案是通过删除*.obj文件(强制)重新编译。
当这没有改变任何事情时,试着从头开始分别重建解决方案。从没有包含的main.cpp开始。然后,在您确信不会出现错误的地方,依次添加文件。在某些情况下,您可能需要注释掉一些行,以使编译成为可能。
https://stackoverflow.com/questions/34082336
复制相似问题