在 CLion 中处理多个 C++ 文件时出现“'main' 的多个定义”错误

问题描述 投票:0回答:2

在我的项目中,我为不同的初学者程序制作了一些文件,以便在 CLion 中开始编码。但是,当我尝试运行我的程序时,出现了“main' 的多重定义”错误。我读到当程序中有多个main'函数定义时会出现这个错误,但我不确定如何解决它。尽管我被告知我应该在我编写的每个程序中编写主要功能。

以下是我要执行的步骤:

  1. 我在我的项目文件夹中创建了一个新的 C++ 文件。
  2. 我在此文件中编写程序代码。
  3. 我尝试通过单击 CLion 中的“运行”按钮来运行该程序。
  4. 我收到“'main'的多重定义”错误。

代码示例:

// main.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!";
    return 0;
}

// file2.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "This is another file.";
    return 0;
}

错误信息:

CMakeFiles/Workspace_Mashup.dir/file2.cpp.obj: In function `main':
file2.cpp:(.text+0x0): multiple definition of `main'
CMakeFiles/Workspace_Mashup.dir/main.cpp.obj:main.cpp:(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

我从 GitHub 下载了 MinGW,并将路径连接到 Clion。 真的很感激帮助

c++ program-entry-point clion
2个回答
1
投票

我不确定这到底是怎么回事,但我猜想 Clion 正在编译项目中的每个 .cpp 文件,无论它是否应该如此。这意味着当编译器发现两个

main()
函数时,它不知道该怎么办。您可以为每个文件创建一个项目,或者尝试弄清楚如何让 Clion 只编译特定文件。
现在看起来可能很痛苦,但做出这种假设是有原因的。当你开始做非常大的项目时,它会让生活更轻松。


0
投票

你可能有很多 main 函数只在不同的项目中。

CLion 不支持多个项目,因为它使用基于脚本的 CMake 系统。

有一些解决方法(请参阅支持多个项目票),但对于初学者我建议避免使用它们并且一次只使用一个项目。

只需将带有 main 的每个 cpp 文件添加到新项目中即可。

© www.soinside.com 2019 - 2024. All rights reserved.