我是c ++的100%新人所以请耐心等待:):
我收到此文件的错误,不知道为什么。任何帮助表示赞赏。
#include <iostream>
using namespace std;
int main()
{
cout << "hi" << endl;
return 0;
}
------------ Build:Debug in 1600(编译器:GNU GCC编译器)-------------
g++ -o bin/Debug/1600 obj/Debug/main.o obj/Debug/src/test.o obj/Debug/test03.o
duplicate symbol _main in:
obj/Debug/main.o
obj/Debug/test03.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
答案 0 :(得分:0)
很难说出你从问题中得到了什么。
以下是如何使用gcc
构建一个简单的C ++程序在
my_program.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "hi" << endl;
return 0;
}
编译为目标文件类型
g++ -c my_program.cpp
要链接(您通常在这里有更多文件)
g++ -o my_program my_program.o
所以,这并不是很有趣,所以大多数人都使用像make,cmake,msbuild或者CLion IDE使用的构建系统。
答案 1 :(得分:0)
从源文件中创建符号。 .cpp文件中的main
变为_main
作为符号。在链接期间,只能有一个main
函数,因此只允许和允许一个_main
符号。
您创建了三个目标文件:
main
main
可能是因为你们每个人都有一个.cpp文件,而你正在使用的命令行或IDE都要编译它们。
duplicate symbol _main
上面的文字告诉你链接器(试图理解所有编译对象(.o)文件)找到了多个main
。
因此,解决方案是查看您的IDE设置并删除其他文件(或至少从其他文件中删除main
),因为您只对编译一个源文件感兴趣。