簡體   English   中英

Xcode:鏈接器命令失敗,退出代碼為1(使用-v查看調用)[C ++]

[英]Xcode: linker command failed with exit code 1 (use -v to see invocation) [C++]

我正在運行包含多個文件的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文件。 超級奇怪,但是有人知道為什么嗎?

問題是您沒有很好地鏈接add方法。 您已經在add.cpp中實現了它,但是沒有在主代碼中添加指向它的鏈接。 您應該在goofing_around.cpp中添加另一個“包含”,例如

#include "add.cpp";

它應該工作。
另一個觀察結果:不需要在主代碼中打印方法“ add”的名稱,因為這些操作都是在頭文件中完成的(如果有的話)。 如果沒有,那是沒有意義的,因為您可以將主代碼鏈接到add.cpp。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM