C++:架构 x86_64 的未定义符号

2024-03-14

我已经阅读了大多数具有此标题的其他帖子,但我找不到解决方案。

我有三个文件(我知道整个程序没有任何意义,它只是用于测试目的):

main.cpp

#include "Animal.h"

Animal ape;

int main(int argc, char *argv[]){
    ape.getRace();

    return 0;
}

Animal.h

class Animal{
    public:
        int getRace();
    private:
        int race;
};

动物.cpp

#include "Animal.h"

Animal::Animal(){
    race = 0;
}

int Animal::getRace(){
    race = 2;
    return race;
}

当我运行 main.cpp 文件时,出现以下错误:

Undefined symbols for architecture x86_64:
  "Animal::getRace()", referenced from:
      _main in main-oTHqe4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[Finished in 0.1s with exit code 1]

这里有什么问题吗?


您需要编译并链接Animal.cpp and main.cpp一起,例如:

gcc main.cpp Animal.cpp

看来您没有链接到Animal.o(上面的命令会执行此操作)。

附:您还需要声明您在其中定义的默认构造函数Animal.cpp:

class Animal{
    public:
        Animal(); // <=== ADD THIS
        int getRace();
    private:
        int race;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:架构 x86_64 的未定义符号 的相关文章

随机推荐