如何在Clion上运行多个C代码?

问题描述

这是我的第一个问题,所以我将尽力解释有关我的问题的所有信息。因此,我下载了Clion来为我的大学学位编写第一个C程序。因此,当我在C上创建一个简单的Hello World时,我可以正常运行,但是如果我创建一个新程序或一个新的hello world,则该程序将失败,并在Clion上出现以下错误:

> ====================[ Build | MeusCodigosC_2_0 | Debug ]======================== "C:\Program Files\JetBrains\CLion
> 2020.2.1\bin\cmake\win\bin\cmake.exe" --build "C:\Users\salom\CLionProjects\MeusCodigosC 2.0\cmake-build-debug"
> --target MeusCodigosC_2_0 -- -j 12 Scanning dependencies of target MeusCodigosC_2_0 [ 33%] Building C object
> CMakeFiles/MeusCodigosC_2_0.dir/AtividadeProducaoLabU2.c.obj [ 66%]
> Building C object CMakeFiles/MeusCodigosC_2_0.dir/HelloWorld.c.obj
> [100%] Linking C executable MeusCodigosC_2_0.exe
> c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> CMakeFiles\MeusCodigosC_2_0.dir/objects.a(HelloWorld.c.obj): na
> função "main": C:/Users/salom/CLionProjects/MeusCodigosC
> 2.0/HelloWorld.c:7: múltiplas definições de "main"; CMakeFiles\MeusCodigosC_2_0.dir/objects.a(AtividadeProducaoLabU2.c.obj):C:/Users/salom/CLionProjects/MeusCodigosC
> 2.0/AtividadeProducaoLabU2.c:32: definido primeiro aqui collect2.exe: error: ld returned 1 exit status mingw32-make.exe[3]: ***
> [MeusCodigosC_2_0.exe] Error 1 mingw32-make.exe[2]: ***
> [CMakeFiles/MeusCodigosC_2_0.dir/all] Error 2 mingw32-make.exe[1]: ***
> [CMakeFiles/MeusCodigosC_2_0.dir/rule] Error 2 mingw32-make.exe: ***
> [MeusCodigosC_2_0] Error 2
> CMakeFiles\MeusCodigosC_2_0.dir\build.make:119: recipe for target
> 'MeusCodigosC_2_0.exe' failed CMakeFiles\Makefile2:94: recipe for
> target 'CMakeFiles/MeusCodigosC_2_0.dir/all' failed
> CMakeFiles\Makefile2:101: recipe for target
> 'CMakeFiles/MeusCodigosC_2_0.dir/rule' failed Makefile:137: recipe for
> target 'MeusCodigosC_2_0' failed

我检查了我的CMakeLists.txt,我读到它是使您的代码运行的文件,并且新代码已添加到目标中,但是我仍然无法运行它。我发现的唯一解决方法是删除我未使用的旧代码,只保留要在特定时刻使用的代码,然后我才能在Clion上运行C代码。有人已经遇到过这样的问题吗?谢谢!

解决方法

该错误消息表明(如果我正确理解葡萄牙语),编译文件中定义了多个main函数。

main()是在执行程序时运行的功能。几个具有相同名称的函数意味着编译器不知道您要运行哪个函数。

如果要编写几个不同的程序,只需将它们放在单独的文件夹中,或确保CMakeLists.txt仅包括其中一个。

UPD:CLion似乎支持一个创建多个可执行文件的项目。参见documentation

对于您来说,CMakeFile.txt应该包含两行(可能需要更正文件名):

add_executable(hello_world HelloWorld.c)

add_executable(MeusCodigosC_2_0 AtividadeProducaoLabU2.c)

如果HelloWorld和Lab2应该共享一些代码,则可以将其提取到一个单独的文件中,例如common.c,然后更新项目以说

add_executable(hello_world HelloWorld.c common.c)

add_executable(MeusCodigosC_2_0 AtividadeProducaoLabU2.c common.c)

,

enter image description here

我在 clion 中遇到了这个问题,我解决了这个问题。我刚刚打开了一个新项目,它确实有效。 看起来很容易修复,但我第一次使用它,所以对我来说有点困难:)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...