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 开头,不包含。然后在您确信不会出错的地方连续添加文件。也许在某些情况下你必须注释掉一些行才能使编译成为可能。
代码结构如下:
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 开头,不包含。然后在您确信不会出错的地方连续添加文件。也许在某些情况下你必须注释掉一些行才能使编译成为可能。