TGK-planner编译报错PLUGINLIB_EXPORT_CLASS解决
编译TGK-planner报错解决
编译时TGH-planner出现两处报错:
error: expected constructor, destructor, or type conversion before ‘;’ token PLUGINLIB_DECLARE_CLASS(SO3ControlNodelet,nodelet::Nodelet);
error: expected constructor, destructor, or type conversion before ‘;’ token
PLUGINLIB_DECLARE_CLASS(CascadeControllerNode, nodelet::Nodelet);
问题描述
对TGK-planner进行复现时,catnkin_make之后编译报错
/tgk_ws/src/TGK-Planner/uav_simulator/so3_control/src/so3_control_nodelet.cpp:219:60: error: expected constructor, destructor, or type conversion before ‘;’ token
PLUGINLIB_DECLARE_CLASS(SO3ControlNodelet,nodelet::Nodelet);
^
[ 87%] Building CXX object TGK-Planner/uav_simulator/cascade_control/CMakeFiles/cascade_controller.dir/src/pid.cpp.o
/tgk_ws/src/TGK-Planner/uav_simulator/cascade_control/src/cascadecontrollernode.cpp:20:65: error: expected constructor, destructor, or type conversion before ‘;’ token
PLUGINLIB_DECLARE_CLASS(CascadeControllerNode, nodelet::Nodelet);
原因分析:
ubuntu18.04和ubuntu16.04在调用库方面存在不同。
解决方案:
使用文本编辑器打开报错的代码的文件,修改对应位置。
gedit ~/tgk_ws/src/TGK-Planner/uav_simulator/cascade_control/src/cascadecontrollernode.cpp
源代码:
//PLUGINLIB_DECLARE_CLASS(cascade_controller, CascadeControllerNode, nodelet::Nodelet);
修改后代码:
PLUGINLIB_EXPORT_CLASS(CascadeControllerNode, nodelet::Nodelet);
gedit ~/tgk_ws/src/TGK-Planner/uav_simulator/so3_control/src/so3_control_nodelet.cpp
源代码:
//PLUGINLIB_DECLARE_CLASS(so3_control, SO3ControlNodelet, SO3ControlNodelet,
// nodelet::Nodelet);
修改后代码:
PLUGINLIB_EXPORT_CLASS(SO3ControlNodelet,nodelet::Nodelet);
参考链接
链接: link