首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对“QVTKWidget::QVTKWidget”的引用未定义

对“QVTKWidget::QVTKWidget”的引用未定义
EN

Stack Overflow用户
提问于 2020-11-26 16:13:56
回答 1查看 167关注 0票数 2

环境为VTK-8.0 ITK-5.2 QT-5.12

当我编译这个cmake文件时,会出现这个错误:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

project(QtDICOMViewer)

find_package(VTK REQUIRED)
#find_package(VTK COMPONENTS
#        vtkCommonCore
#        vtkFiltersSources
#        vtkGUISupportQt
#        vtkIOImage
#        vtkInteractionImage
#        vtkFiltersCore
#        vtkInfovisCore
#        vtkInteractionStyle
#        vtkViewsQt
#        vtkCommonDataModel
#        vtkCommonExecutionModel
#        vtkRenderingCore
#        vtkRenderingFreeType
#        vtkRenderingOpenGL2
#        )
include(${VTK_USE_FILE})


if("${VTK_QT_VERSION}" STREQUAL "")
    message(FATAL_ERROR "VTK was not built with Qt")
endif()

find_package(ITK REQUIRED)
include(${ITK_USE_FILE})

include_directories(
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}
)
# Set your files and resources here
set( Srcs main.cpp mainwindow.cpp)

set( Hdrs mainwindow.h )

set( MOC_Hdrs mainwindow.h )

set( UIs mainwindow.ui )

set( QRCs images.qrc )

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED QUIET)
qt5_wrap_ui(UI_Srcs ${UIs})
qt5_add_resources(QRC_Srcs ${QRCs} )

source_group("Resources" FILES
        ${UIs}
        ${QRCs}
        ${EXE_ICON} # Not present
        )

source_group("Generated" FILES
        ${UI_Srcs}
        ${MOC_Srcs}
        ${QRC_Srcs}
        )

include_directories(/usr/include/gdcm-2.6)

# CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
add_executable(QtDICOMViewer MACOSX_BUNDLE ${Srcs} ${Hdrs} ${UI_Srcs} ${MOC_Hdrs} ${QRC_Srcs})
qt5_use_modules(QtDICOMViewer Core Gui Widgets)
target_link_libraries(QtDICOMViewer ${VTK_LIBRARIES} ${ITK_LIBRARIES})

错误是:

代码语言:javascript
复制
 undefined reference to 'QVTKWidget::QVTKWidget' in ui.mainwindow.h:xxx

没有链接错误和任何包含错误,只是检测不到这个变量。我整天都在苦苦挣扎:(但当我用VTK/Examples编译示例时,什么都没有失败。示例CMakeLists为:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

project(QtVTKRenderWindows)

find_package(VTK COMPONENTS
  vtkCommonCore
  vtkFiltersSources
  vtkGUISupportQt
  vtkIOImage
  vtkInteractionImage
  vtkFiltersCore
  vtkInfovisCore
  vtkInteractionStyle
  vtkViewsQt
)
include(${VTK_USE_FILE})


if("${VTK_QT_VERSION}" STREQUAL "")
  message(FATAL_ERROR "VTK was not built with Qt")
endif()

include_directories(
        ${CMAKE_CURRENT_BINARY_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}
)
# Set your files and resources here
set( Srcs QtVTKRenderWindowsApp.cxx QtVTKRenderWindows.cxx)

set( Hdrs QtVTKRenderWindows.h)

set( MOC_Hdrs QtVTKRenderWindows.h)

#set( UIs QtVTKRenderWindows.ui )

set( QRCs Icons/icons.qrc )

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED QUIET)
#qt5_wrap_ui(UI_Srcs ${UIs})
qt5_add_resources(QRC_Srcs ${QRCs} )

source_group("Resources" FILES
        ${UIs}
        ${QRCs}
        ${EXE_ICON} # Not present
        )

source_group("Generated" FILES
        ${UI_Srcs}
        ${MOC_Srcs}
        ${QRC_Srcs}
        )

# CMAKE_AUTOMOC in ON so the MocHdrs will be automatically wrapped.
add_executable(QtVTKRenderWindows MACOSX_BUNDLE ${Srcs} ${Hdrs} ${UI_Srcs} ${MOC_Hdrs} ${QRC_Srcs})
qt5_use_modules(QtVTKRenderWindows Core Gui Widgets)
target_link_libraries(QtVTKRenderWindows ${VTK_LIBRARIES})

我找不到它们之间有什么不同。那么有没有可能是代码导致了这个错误?

EN

回答 1

Stack Overflow用户

发布于 2021-09-26 11:51:39

您必须将程序链接到vtkGUISupportQt-7.1库

在我的例子中,我在ubuntu20.04中,该库位于/usr/lib/x86_64-linux-gnu/libvtkGUISupportQt-7.1.so中

你可以安装apt包: libvtk7-qt-dev

apt-get install libvtk7-qt-dev

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

https://stackoverflow.com/questions/65018232

复制
相关文章

相似问题

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