gpt4 book ai didi

c++ - undefined symbol 。 ld : symbol not found

转载 作者:IT王子 更新时间:2023-10-29 00:50:40 37 4
gpt4 key购买 nike

除了这个 undefined symbol 错误外,一切正常:

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()", referenced from:
Myworld::readObstacles(std::basic_istream<char, 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();

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

关于c++ - undefined symbol 。 ld : symbol not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693471/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com