加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 未定义的符号. ld:找不到符号

发布时间:2020-12-16 10:16:00 所属栏目:百科 来源:网络整理
导读:一切正常,除了这个未定义的符号错误: bash-3.2$makeg++ -Wall -g solvePlanningProblem.o Position.o AStarNode.o PRM.o PRMNode.o Worl.o SingleCircleWorld.o Myworld.o RECTANGLE.o CIRCLE.o -o solvePlanningProblem`Undefined symbols: "Obstacle::~Ob
一切正常,除了这个未定义的符号错误:

bash-3.2$make
g++ -Wall -g solvePlanningProblem.o Position.o AStarNode.o PRM.o PRMNode.o Worl.o SingleCircleWorld.o Myworld.o RECTANGLE.o CIRCLE.o -o solvePlanningProblem

`Undefined symbols:
  "Obstacle::~Obstacle()",referenced from:
      Myworld::~Myworld()in Myworld.o
      Myworld::~Myworld()in Myworld.o
      Myworld::~Myworld()in Myworld.o
  "RECTANGLE::RECTANGLE()",referenced from:
      Myworld::readObstacles(std::basic_istream<char,std::char_traits<char> >&
in Myworld.o
  "CIRCLE::CIRCLE()",std::char_traits<char> >&
in Myworld.o
  "typeinfo for Obstacle",referenced from:
      typeinfo for RECTANGLEin RECTANGLE.o
      typeinfo for CIRCLEin CIRCLE.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [solvePlanningProblem] Error 1`

这是一个奇怪的错误.构造函数或析构函数有问题吗?
任何建议都会有帮助.

在所有构造函数和析构函数之后添加{}后,错误已减少
至:

Undefined symbols:

  "vtable for Obstacle",referenced from:
      Obstacle::Obstacle()in Myworld.o
  "typeinfo for Obstacle",referenced from:
      typeinfo for RECTANGLEin RECTANGLE.o
      typeinfo for CIRCLEin CIRCLE.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

解决方法

链接器无法找到Obstacle类的析构函数.

它是在另一个目标文件(也许是Obstacle.o)?如果是这样,请将其添加到要链接的对象列表中.

它应该是类定义中的空虚拟析构函数吗?在这种情况下,请确保你已经写好了

virtual ~Obstacle() {}

并不是

virtual ~Obstacle();

第一个实现析构函数;第二个声明它存在,但在其他地方实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读