首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义对...的引用编译ros节点时

未定义对...的引用编译ros节点时
EN

Stack Overflow用户
提问于 2015-05-28 05:11:44
回答 1查看 5.4K关注 0票数 0

我正在尝试编写一个使用OpenCV非自由组件(SURF)的ROS-Node。我在使用catkin_make编译这个包时遇到了问题:

代码语言:javascript
复制
//usr/local/lib/libopencv_nonfree.so: undefined reference to `cv::ocl::integral(cv::ocl::oclMat const&, cv::ocl::oclMat&)'

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.3)
project(homography_test)

## Find catkin macros and libraries
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  sensor_msgs
  cv_bridge
  image_transport
)

catkin_package(

)

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
# include_directories(include)
include_directories(
    ${catkin_INCLUDE_DIRS}
    /usr/local/include
    /usr/include
    /usr/include/gstreamer-1.0
    /usr/include/glib-2.0
    /usr/lib/x86_64-linux-gnu/glib-2.0/include
)

## Declare a cpp executable
#add_executable(display_image src/display_image_node.cpp)
add_executable(homography src/sample.cpp)

## Add cmake target dependencies of the executable/library
## as an example, message headers may need to be generated before nodes
#add_dependencies(homography_test homography_test_generate_messages_cpp)

## Specify libraries to link a library or executable target against
target_link_libraries(
    homography

    ${catkin_LIBRARIES}

    gstreamer-1.0
    gobject-2.0
    glib-2.0

    opencv_nonfree
    opencv_calib3d
    opencv_contrib
    opencv_core
    opencv_features2d
    opencv_flann
    opencv_gpu
    opencv_highgui
    opencv_imgproc
    opencv_legacy
    opencv_ml
    opencv_objdetect
    opencv_ocl
    opencv_photo
    opencv_stitching
    opencv_superres
    opencv_ts
    opencv_video
    opencv_videostab
    rt
    pthread
    m
    dl
)

link_directories(/usr/local/lib)

但是,如果我手动编译相同的代码,而不是以ROS-node的身份编译,一切都会正常工作。

EN

回答 1

Stack Overflow用户

发布于 2015-05-28 15:56:16

opencv_ocl库似乎没有正确链接。此外,通过使用find_package获取OpenCV配置,还可以大大简化CMakeLists.txt文件。尝试将这些行添加到CMakeLists.txt文件中:

代码语言:javascript
复制
find_package(OpenCV REQUIRED core ocl)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS})
target_link_libraries(homography ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} )

您需要指定要包含在find_package中的OpenCV库。我只列出了coreocl,因为ocl似乎是您需要的,但可能还需要其他的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30493228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档