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(); 第一个实现析构函数;第二个声明它存在,但在其他地方实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |