QT5 编译出现: undefined reference to `vtable for xxxxx`
用cmake(不是qmake)编译QT5,出现如下错误:undefined reference to `vtable for GraphicsView'
1:首先检查CMakeLists.txt中是否开启了QT的预处理:
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(QT_USE_QTMAIN TRUE)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
2: 如果上面的都添加了,则很有可能是没有把头文件也添加到源文件:
出错情况:
set(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/mainwindow.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/GraphicsView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp )
添加头文件后,错误被修正:
set(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/GraphicsView.h
${CMAKE_CURRENT_SOURCE_DIR}/include/mainwindow.h
${CMAKE_CURRENT_SOURCE_DIR}/src/mainwindow.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/GraphicsView.
cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp )
因为这些头文件中包含了Q_OBJECT、Q_SLOTS等 QT关键字,因此也需要添加到add_executable中。
add_executable(lidar_calibration_viewer ${SRC_FILES})