Xcode:链接器命令失败,退出代码为1(使用-v查看调用)[C+;+;] 我正在运行一个具有多个文件(2)的C++程序。

Xcode:链接器命令失败,退出代码为1(使用-v查看调用)[C+;+;] 我正在运行一个具有多个文件(2)的C++程序。,c++,linker-errors,C++,Linker Errors,闲逛 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

闲逛

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文件之前,错误就已经存在了。但后来我删除了项目并重试。在重写所有代码并添加add文件后,我删除了.h文件。但这一次它工作了,代码完全相同,包括相同的函数原型。我也不必包括add.cpp文件。
超级奇怪,但是有人知道为什么吗?

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

#include "add.cpp";
它应该能工作。

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

你也有.h文件吗?似乎您在add.cpp中也定义了一个main?我没有.h文件。您所拥有的应该可以工作。但根据链接器,您有两个来自同一源的目标代码文件:
goofing_-5915963FFFEE024.o
goofing_-93c434898546d.o
。如何使用Xcode做到这一点仍然是个谜,但目前,我所能建议的最好方法是完全清理项目(shift--cmd-k),然后重建(cmd-b)。如果这不起作用,您可能必须从头开始构建一个新的项目文件夹,并将源文件带入其中。@WhozCraig-Yup这样做了,但现在重复的符号是uu-Z3addii-in:erase int-add(int x,any y);来自goofing_around.cpp_Z3addii是程序集中的add函数。你必须申报一次!你做了两次!所以这就是为什么你有一个副本,这不应该是必要的。在几乎所有的上下文中,
#include
-ing.cpp文件掩盖了一个更大的项目代码管理问题。我更改了add函数,添加了两个num,它成功了,那是在我重新创建项目之后
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)
#include "add.cpp";