当前位置: 首页 > 知识库问答 >
问题:

对符号“_zn5boost6system15system_categoryev”/的未定义引用

周锐
2023-03-14
cmake_minimum_required(VERSION 2.4.6)
set(OpenCV_DIR "/usr/local/opencv-2.4.9/share/OpenCV")
include_directories("/usr/local/opencv-2.4.9/include")
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
find_package(Qt4 COMPONENTS QtCore QtGui)
find_package(OpenCV 2.4.9 REQUIRED)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
rosbuild_init()
rosbuild_genmsg()
find_package(Boost COMPONENTS system REQUIRED)
set(qt_srcs
    src/mainwindow.cpp
    src/listnerthr.cpp
    src/ros_thr.cpp
    src/CreatDataBuffer.cpp
    src/CreatBuffer.cpp
    src/pid_controller.cpp
    src/low_pass_filter.cpp

    src/plot_publisher.cpp)
set(qt_hdrs
    src/mainwindow.h
    src/listnerthr.h
    src/ros_thr.h
    src/CreatDataBuffer.h
    src/HelperFunctions.h
    src/CreatBuffer.h
    src/pid_controller.h
    src/low_pass_filter.h

    src/plot_publisher.h)
qt4_automoc(${qt_srcs})
QT4_WRAP_CPP(qt_moc_srcs ${qt_hdrs})
QT4_WRAP_UI(uis_h src/mainwindow.ui)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
rosbuild_add_executable(qttest src/main.cpp
    ${uis_h} ${qt_srcs} ${qt_moc_srcs})
target_link_libraries(qttest ${QT_LIBRARIES}${Boost_LIBARAIES }${OpenCV_LIBARAIES})

如有任何线索将不胜感激。

换了cmakelists后我又遇到了一个问题

*** No rule to make target '/usr/lib/x86_64-linux-gnu/libboost_system.so/usr/lib/x86_64-linux-gnu/libboost_system.so', needed by '../bin/qttest'. Stop. CMakeFiles/Makefile2:425: recipe for target 'CMakeFiles/qttest.dir/all' failed –

共有1个答案

颜奇希
2023-03-14

应该将boost库传递给target_link_libraries命令。对文件的最小更改如下:

target_link_libraries(qttest ${QT_LIBRARIES} ${LIBS})

但是,由于您正在使用find_package进行Boost操作,并且实际上并没有在任何地方使用libs变量,因此应该坚持如下所示:

find_package(Boost COMPONENTS system REQUIRED)
...
target_link_libraries(qttest ${QT_LIBRARIES} ${OpenCV_LIBS} ${Boost_LIBRARIES})

并完全删除libs

 类似资料:
  • 我试图加载一个. so文件(libInfExprParser.so)使用JNI。我没有这个共享对象的源代码。我得到以下错误: 线程“main”java中出现异常。lang.unsatifiedlinkerror:/home/tomcat/sahiti/ExprParser/libinfexparser。所以:/home/tomcat/sahiti/ExprParser/libinexprparse

  • 我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一

  • 错误:未定义对'pthread_cancel'的引用

  • 问题内容: 当我尝试在python中执行我的主文件时遇到问题(我在使用python 2.7的Ubuntu 12.04上)。我收到此错误: 目前scipy是通过Python软件包管理器安装的。 谢谢。 问题答案: 您正在使用与用于编译scipy的Python解释器不同的Python解释器来运行代码。这通常发生在使用Unicode UCS2支持编译的Python安装程序,运行针对使用UnicodeUC

  • 问题内容: 我正在尝试使用一百万首歌曲数据集,为此,我不得不安装python表,numpy,cython,hdf5,numexpr等。 昨天我设法安装了所有需要的东西,并且在使用hdf5遇到了一些麻烦之后,我下载了预编译的二进制程序包,并将它们保存在我的/ bin文件夹和/ lib中的相应库中,然后测试了此python脚本: 而且工作正常,要明确我的工作方式是先运行脚本并开始安装所需的依赖项,但是

  • 问题内容: 当我尝试在python中执行我的主文件时遇到问题(我在使用python 2.7的Ubuntu 12.04上)。我收到此错误: 目前scipy是使用Python软件包管理器安装的(请参阅我以前的文章:python:scipy安装在ubuntu上)。 谢谢。 问题答案: 您正在使用与用于编译scipy的Python解释器不同的Python解释器来运行代码。这通常发生在使用Unicode U