文件的新 C++ 错误

new c++ error with file

我是 100% 的 C++ 新手,所以请多多包涵 :)

我收到此文件的错误消息,但不确定原因。任何帮助表示赞赏。

#include <iostream>

using namespace std;

int main()
{
    cout << "hi" << endl;
    return 0;
}

------------ Build: Debug in 1600 (compiler: GNU GCC Compiler)------------

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)

很难从问题中判断出你是什么 运行。

这里是如何使用 gcc 构建一个简单的 C++ 程序

my_program.cpp

#include <iostream>

using namespace std;

int main()
{
    cout << "hi" << endl;
    return 0;
}

编译成目标文件类型

g++ -c my_program.cpp

至link(您通常会在此处拥有更多文件)

g++ -o my_program my_program.o

所以,这不是很有趣,所以大多数人使用构建系统,如 make、cmake、msbuild 或 CLion IDE 使用的任何东西。

从源文件创建符号。 .cpp 文件中的 main 变成 _main 作为符号。在链接过程中,只能有一个 main 函数,因此只能使用一个 _main 符号。


您创建了三个目标文件:

  • obj/Debug/main.o 其中包含 main
  • obj/Debug/src/test.o
  • obj/Debug/test03.o 其中 还包含 main

可能是因为您每个都有一个 .cpp 文件,并且您正在使用的命令行或 IDE 要求对它们全部进行编译。

duplicate symbol _main

上面的文字告诉您链接器(试图理解所有已编译的对象 (.o) 文件)发现了不止一个 main


因此解决方案是查看您的 IDE 设置并删除其他文件(或至少从其他文件中删除 main),因为您只对编译一个源文件感兴趣.