【问题标题】:Errors while building with QWT使用 QWT 构建时出错
【发布时间】:2016-10-25 09:14:30
【问题描述】:

我收到一个错误

undefined reference to `QwtPlot::QwtPlot(QWidget*)'

当我尝试构建我的项目时,即使设置中的一切看起来都很好。

在我的 CmakeLists.txt 我有

include_directories(
  [...]
  ${QWT_INCLUDE_DIR})

指向我的 Qwt 标头的位置 和

find_package(Qwt REQUIRED)

有效,因为 QWT_FOUND 设置为 True

这是我的 FindQwt.cmake:

#MESSAGE("Searching for QWT")
FIND_PATH(QWT_INCLUDE_DIR NAMES qwt.h PATHS
  /usr/include
  /usr/local/include
  "$ENV{LIB_DIR}/include" 
  "$ENV{INCLUDE}" 
  PATH_SUFFIXES qwt-qt4 qwt
  )

FIND_LIBRARY(QWT_LIBRARY NAMES qwt qwt5 qwt-qt4 qwt5-qt4 PATHS 
  /usr/lib
  /usr/local/lib
  "$ENV{LIB_DIR}/lib" 
  "$ENV{LIB}/lib" 
  )

IF (QWT_INCLUDE_DIR AND QWT_LIBRARY)
  SET(QWT_FOUND TRUE)
ENDIF (QWT_INCLUDE_DIR AND QWT_LIBRARY)

IF (QWT_FOUND)
  IF (NOT QWT_FIND_QUIETLY)
    MESSAGE(STATUS "Found QWT: ${QWT_LIBRARY}")
  ENDIF (NOT QWT_FIND_QUIETLY)
ELSE (QWT_FOUND)
  IF (QWT_FIND_REQUIRED)
    MESSAGE(FATAL_ERROR "Could not find QWT")
  ENDIF (QWT_FIND_REQUIRED)
ENDIF (QWT_FOUND)

使用消息打印 ${QWT_INCLUDE_DIR} 指向 qwt_plot.h,其中定义了 QwtPlot::QwtPlot(QWidget*),所以我不确定我可能会丢失什么。

【问题讨论】:

  • undefined reference 表示已找到符号声明(在头文件中),但没有定义(没有库定义给定符号)。您需要检查 QWT_LIBRARY 变量的值以及您是否实际使用它进行链接 (target_link_libraries)。
  • 似乎找到库就好了: message("Library: " ${QWT_LIBRARY}) 返回 "Library: /usr/lib/libqwt.so" 但是感谢您指出这一点,这是有道理的!

标签: qt cmake qwt


【解决方案1】:

我忘记将库实际链接到项目

target_link_libraries(project
   [...]
   ${QWT_LIBRARY}
 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多