【问题标题】:Undefined Symbols for architecture x86_64 Xcode Mac架构 x86_64 Xcode Mac 的未定义符号
【发布时间】:2013-02-07 09:44:45
【问题描述】:

我需要一些帮助。 最近尝试学习一些编程,遇到了一些问题,但都已经解决了。 除了这个。 我知道它已经被回答了很多次,但我从来没有为我的具体案例找到解决方案。 我正在使用 Xcode V. 4.5.2 这是程序:

int add(int x, int y);

int main()

    using namespace std;
    cout << "3 + 4 + 5 = " << add(3, 4) << endl;
    return 0;
}

int add(int x, int y, int z)

    return x + y + z;
}

它给了我这个错误:

架构 x86_64 的未定义符号:“add(int, int)”, 参考自: main.o 中的 _main (也许你的意思是:__Z3addiii) ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)

我不知道该怎么办。

我一直在关注这个教程:

http://www.learncpp.com/cpp-tutorial/17-forward-declarations/

Quiz 下的第五个程序就是这个。

谢谢 柠檬汁

【问题讨论】:

    标签: c++ undefined symbols


    【解决方案1】:

    您的前向声明是int add(int x, int y);,但您的定义是int add(int x, int y, int z)。第一个没有int z,但第二个有。他们需要 100% 匹配。定义大概应该是:

    int add(int x, int y) {
        return x + y;
    }
    

    链接器错误告诉您“我不知道任何add(int, int) 函数”,这是适当的,因为没有任何类型的add(int, int) 函数的定义。只有一个add(int, int, int) 函数,显然是不同的。

    【讨论】:

    • 我知道这一点,你看这不是这里的问题。该程序不应该工作,它是出于学习目的而不能工作,因此您可以找到问题,(您做到了:D)但这个错误仍然不是它的一部分。感谢您(非常!)的快速回答,但不幸的是不是我需要的:(
    • @Lemonizer:呃……什么?根据您的链接器错误,这正是出了什么问题。也许你的意思是你的前向声明是int add(int x, int y);,你的函数调用是add(3, 4, 5)?有几种方法可以修复错误,但我的回答“需要匹配 100%”是确切的解决方案。如何让它们 100% 匹配取决于您。
    • 你好。如果你看我后面的链接,你可以看到作者也提到它不会链接,但他没有提到任何''Higher level errors''这不仅仅是一个红色!,它有它自己的页面:S
    • 哦,好吧,我猜我只是高估了错误:P。谢谢你们的快速响应。我会以你的名字命名我的第一个程序,如果这对你来说当然可以的话。长长的白天和愉快的夜晚,先生! -柠檬水
    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2021-03-12
    • 2016-11-07
    • 2015-11-24
    • 2013-03-09
    相关资源
    最近更新 更多