C++ 对符号'的未定义引用_ZN3ros10NodeHandle9subscribeERNSu 16 subscribeeoptionse';
我只是想用ROS编译一个程序。我已经链接了所有必要的库,但这个我找不到。我得到的只是代码块中的以下错误(同样在eclipse中) 有人知道如何摆脱这个错误吗?甚至它需要哪个图书馆C++ 对符号'的未定义引用_ZN3ros10NodeHandle9subscribeERNSu 16 subscribeeoptionse';,c++,cmake,ros,C++,Cmake,Ros,我只是想用ROS编译一个程序。我已经链接了所有必要的库,但这个我找不到。我得到的只是代码块中的以下错误(同样在eclipse中) 有人知道如何摆脱这个错误吗?甚至它需要哪个图书馆 /usr/bin/ld:CMakeFiles/DistanceKinectDemo.dir/src/DistanceKinectDemo.cpp.o: undefined reference to symbol '_ZN3ros10NodeHandle9subscribeERNS_16SubscribeOptions
/usr/bin/ld:CMakeFiles/DistanceKinectDemo.dir/src/DistanceKinectDemo.cpp.o: undefined reference to symbol
'_ZN3ros10NodeHandle9subscribeERNS_16SubscribeOptionsE'
/opt/ros/kinetic/lib/libroscpp.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
gpuvoxelgetpointcloud/CMakeFiles/DistanceKinectDemo.dir/build.make:370: recipe for target
'/home/pcl_gpu/devel/lib/gpuvoxelgetpointcloud/DistanceKinectDemo' failed
make[2]: *** [/home/shupeng/pcl_gpu/devel/lib/gpuvoxelgetpointcloud/DistanceKinectDemo] Error 1
CMakeFiles/Makefile2:1130: recipe for target 'gpuvoxelgetpointcloud/CMakeFiles/DistanceKinectDemo.dir/all' failed
链接器在库列表中找不到符号。 调用
find_package(catkin REQUIRED COMPONENTS…
时,必须列出组件roscpp
。此外,您需要将${catkin_LIBRARIES}
添加到目标链接_库调用中。
最后,要链接的库应该按照它们之间的依赖关系降序列出,这意味着您应该将${catkin\u libraries}
放在target\u link\u libraries
调用的末尾,如果您有其他依赖它的库。
最后,您的CMakeLists.txt
文件应该如下所示:
...
find_package(catkin REQUIRED COMPONENTS roscpp <more packages>)
...
add_executable(DistanceKinectDemo <your cpp files>)
...
target_link_libraries(DistanceKinectDemo
<all your libraries and other dependencies>
${catkin_LIBRARIES}
)
。。。
查找包装(柳絮所需组件roscpp)
...
添加可执行文件(DistanceKinectDemo)
...
目标链接库(距离Kinect演示)
${catkin_图书馆}
)
您可能在CMakeLists.txt中缺少一些链接命令。请编辑您的问题以添加软件包的CMakeLists.txt的内容。问题是查找软件包(catkin REQUIRED COMPONENTS roscpp)。有几种型号。