文件的新 C++ 错误

new c++ error with file

本文关键字:错误 C++ 文件      更新时间:2023-10-16

我是 100% 的 c++ 新手,所以请耐心等待:)

我收到此文件的错误,不确定原因。 任何帮助不胜感激。

#include <iostream>
using namespace std;
int main()
{
cout << "hi" << endl;
return 0;
}

------------ Build: Debug in 1600 (编译器: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)

从源文件创建符号。 .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),因为您只对编译一个源文件感兴趣。

很难从这个问题中分辨出你在跑什么。

以下是使用 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使用的任何系统。