Xcode:链接器命令失败,退出代码为1(使用-v查看调用)[C ++]

时间:2018-08-16 07:04:05

标签: c++ linker-errors

我正在运行包含多个文件的c ++程序(2)

goofing_around.cpp

add.cpp

goofing_around.cpp:

//
//  goofing_around.cpp
//  new
//
//  Created by Chirag Maheshwari on 14/08/18.
//  Copyright © 2018 Chirag Maheshwari. All rights reserved.
//

#include <iostream>


int add(int x,int y);
int doubleNumber(int n)
{
    return 2*n ;
}
int main()
{
    int x;
    std::cout << "Enter the number to be doubled: ";
    std::cin >> x;
    std::cout << doubleNumber(x)<<std::endl;
    std::cout << add(3,2) << std::endl;
    return 0;
}

add.cpp:

#include <iostream>
int add(int x,int y){
    return x+y;
}

但是我却收到了这样的错误:

duplicate symbol _main in:
    /Users/chirag/Library/Developer/Xcode/DerivedData/new-hapneuayvrpdonefrpnervwkxysx/Build/Intermediates.noindex/new.build/Debug/new.build/Objects-normal/x86_64/goofing_around-5915963FFFEE024.o
    /Users/chirag/Library/Developer/Xcode/DerivedData/new-hapneuayvrpdonefrpnervwkxysx/Build/Intermediates.noindex/new.build/Debug/new.build/Objects-normal/x86_64/goofing_around-93C433489854664D.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

编辑:这很奇怪。甚至在我添加add.cpp文件之前,该错误就出现了。但是后来我删除了项目并再次尝试。然后在重写所有代码并添加了添加文件之后,我删除了。 h文件。但是只有这次才起作用,使用完全相同的代码,并包含相同的函数原型。我也不必包含add.cpp文件。 超级奇怪,但是有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

问题是您没有很好地链接add方法。您已经在add.cpp中实现了它,但是没有在主代码中添加指向它的链接。您应该在goofing_around.cpp中添加另一个“包含”,例如

#include "add.cpp";

应该可以。
另一个观察结果:不需要在主代码中打印方法“ add”的名称,因为这些操作都是在头文件中完成的(如果有的话)。如果没有,那是没有意义的,因为您可以将主代码链接到add.cpp。