cmake过程中出现的错误

问题一:cmake undefined reference to `QUdpSocket::~QUdpSocket()’
缺少qt中的network
解决方法:

#查找需要的Qt库文件,指定为qt5   COMPONENT后面的qt组件  Core Gui Qml Quick Widgets  Network 
find_package(Qt5 COMPONENTS   Network  REQUIRED)   
set(LIBRARIES_out   Qt5::Network )  
TARGET_LINK_LIBRARIES(${PROJECT_NAME} *** ${LIBRARIES_out})   #***:其他库链接

问题二:libcublas.so.11: error adding symbols: DSO missing from command linelibcublas.so.11: error adding symbols: DSO missing from command line
解决方法:

find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})  
link_directories(${CUDA_LIBRARIES}/lib64)  # 如果还是找不到cublas.so,直接给cublas.so的绝对路径(路径通过搜索得到)
set(LIBRARIES_out cublas  )  #设置自己用到的所有库名
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS} ${CUDA_LIBRARIES} ${Protobuf_LIBRARIES} ${LIBRARIES_out}) 

我缺少的是libcublas.so.11这个链接库,我们只需要在CMakeList中定向链接这个库即可
参考

问题三:undefined reference to `initLibNvInferPlugins’
collect2: error: ld returned 1 exit status
缺少nvinfer_plugin.so文件

include_directories(/***/TensorRT-8.2.1.8/include)
link_directories(/***/TensorRT-8.2.1.8/lib)
set(LIBRARIES_out  nvonnxparser nvinfer nvinfer_plugin ) 
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS} ${CUDA_LIBRARIES} ${Protobuf_LIBRARIES}  ${LIBRARIES_out}) 

在上面代码上,我引用了tensorrt的nvonnxparser、nvonnxparser和nvinfer_plugin这三个库

问题四:undefined reference to `google::protobuf::RepeatedField::size() const’
缺少protobuf的库
解决方法:

#找到protobuf
find_package(Protobuf REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})  # 如果系统上安装了多个版本,当需要指定版本时,给绝对路径 

TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Protobuf_LIBRARIES} ) 

你可能感兴趣的:(错误,cmake)