在ROS中编译工作空间,报了一堆函数未定义的引用的错误
在我的工作空间中,主程序main.cpp中用了函数function(), function在aaa.h的头文件中有声明,在aaa.cpp文件中进行实现
原因:CMakeList.txt文件少了aaa.cpp文件的配置,导致编译的时候没有将aaa.cpp文件与main.cpp没有连接上,所以加上:
add_library(aaa src/aaa.cpp)
target_link_libraries( aaa ${catkin_LIBRARIES})
target_link_libraries(main aaa ${catkin_LIBRARIES})
add_dependencies(main ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
完整的CMakeList.txt文件:
cmake_minimum_required(VERSION 3.0.2)
project(haahaha)
## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
generate_messages(
DEPENDENCIES
std_msgs # Or other packages containing msgs
)
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS std_msgs message_runtime roscpp
LIBRARIES
aaa
# DEPENDS system_lib
)
include_directories(
include/${PROJECT_NAME}
${catkin_INCLUDE_DIRS}
)
add_library(aaa src/aaa.cpp)
target_link_libraries( aaa
${catkin_LIBRARIES}
)
add_executable(main src/main.cpp)
target_link_libraries(main aaa ${catkin_LIBRARIES})
## Declare a C++ library
add_dependencies(main ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
文章讲述了在ROS开发过程中,由于CMakeList.txt配置问题导致主程序引用的库函数未被正确编译。通过添加目标链接和依赖项,解决了编译时的函数未定义错误。
5292

被折叠的 条评论
为什么被折叠?



