ROS學習筆記--問題記錄--ros::init未定義的引用


catkin_make編譯,報錯如下:

 1 CMakeFiles/test_param_node.dir/src/test_param_node.cpp.o:在函數‘main’中:
 2 test_param_node.cpp:(.text+0x70):對‘ros::init(int&, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)’未定義的引用
 3 test_param_node.cpp:(.text+0xcc):對‘ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)’未定義的引用
 4 test_param_node.cpp:(.text+0x246):對‘ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)’未定義的引用
 5 test_param_node.cpp:(.text+0x36c):對‘ros::NodeHandle::~NodeHandle()’未定義的引用
 6 test_param_node.cpp:(.text+0x399):對‘ros::NodeHandle::~NodeHandle()’未定義的引用
 7 test_param_node.cpp:(.text+0x4f2):對‘ros::NodeHandle::~NodeHandle()’未定義的引用
 8 test_param_node.cpp:(.text+0x524):對‘ros::NodeHandle::~NodeHandle()’未定義的引用
 9 CMakeFiles/test_param_node.dir/src/test_param_node.cpp.o:在函數‘bool ros::NodeHandle::param<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const’中:
10 test_param_node.cpp:(.text._ZNK3ros10NodeHandle5paramINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKS7_RT_RKSA_[_ZNK3ros10NodeHandle5paramINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKS7_RT_RKSA_]+0x27):對‘ros::NodeHandle::hasParam(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const’未定義的引用
11 test_param_node.cpp:(.text._ZNK3ros10NodeHandle5paramINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKS7_RT_RKSA_[_ZNK3ros10NodeHandle5paramINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKS7_RT_RKSA_]+0x42):對‘ros::NodeHandle::getParam(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const’未定義的引用
12 collect2: error: ld returned 1 exit status
13 test_param/CMakeFiles/test_param_node.dir/build.make:86: recipe for target '/home/xxx/catkin_test/devel/lib/test_param/test_param_node' failed
14 make[2]: *** [/home/xxx/catkin_test/devel/lib/test_param/test_param_node] Error 1
15 CMakeFiles/Makefile2:482: recipe for target 'test_param/CMakeFiles/test_param_node.dir/all' failed
16 make[1]: *** [test_param/CMakeFiles/test_param_node.dir/all] Error 2
17 Makefile:143: recipe for target 'all' failed
18 make: *** [all] Error 2

問題原因:

通過https://answers.ros.org/question/63656/how-to-solve-undefined-reference-to-rosinit-on-groovy/

可知,問題在於沒有鏈接到ros庫

解決方式:

將默認CMakeLists.txt中的target_link_libraries()部分解除注釋

target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
)

重新編譯,問題解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM