gpt4 book ai didi

c++ - 尝试在终端(MacOSX)中编译两个.cpp文件(来自XCode)时的“Duplicate symbol”

转载 作者:行者123 更新时间:2023-12-02 11:10:35 25 4
gpt4 key购买 nike

我有两个.cpp文件,main.cpp和secondFile.cpp:

#include <iostream>

int main()
{
std::cout << "Hello, World!\n" << std::endl;
std::cout << "I was also able to add this line!" << std::endl;
return 0;
}


#include <iostream>

int main()
{
std::cout << "This was from the second file!" << std::endl;
return 0;
}

我已经成功运行了 g++ -o main.cpp maing++ -o secondFile.cpp secondFile,并且运行了它们各自的可执行文件。但是,当我尝试将它们同时编译为单个可执行文件 g++ -o main.cpp secondFile.cpp bothScriptsclang++ main.cpp secondFile.cpp -o bothScripts时,出现以下错误:

“重复的符号_main位于:
/var/folders/49/38grlkzs44zcth3v_dw9m9dm0000gn/T/main-d43536.o
/var/folders/49/38grlkzs44zcth3v_dw9m9dm0000gn/T/secondfile-2bee63.o
ld:体系结构x86_64的1个重复符号
铛:错误:链接器命令失败,退出代码为1(使用-v查看调用)”

显然,某些东西被加载了两次,但是我不确定这是一个库(iostream),我已经将这两个部分都命名为“main”还是其他东西。当然已经有与此类似的问题,但是许多问题是令人费解的,而不是新的C++成员所必需的(因此在这里提出我的问题)。

上下文:我的基本原理是练习从多个.cpp文件构建可执行文件。有没有更好的方法来解决这个问题? (对于C++来说是新手,但总体上对编程/代码不是。)

最佳答案

错误的原因很简单。您有2个main()函数。如您所知,在C++程序中,函数main()通常定义程序的入口点。当每个文件一起编译并具有自己的main()函数时,编译器会感到困惑并抛出错误。要解决此问题,如果计划一起运行,只需在一个文件中更改main()函数的名称,然后从另一个文件中调用它即可。

关于c++ - 尝试在终端(MacOSX)中编译两个.cpp文件(来自XCode)时的“Duplicate symbol”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com