You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt MOC无法识别include目录头文件,如何免改结构解决链接错误?

无需修改结构或显式添加头文件解决Qt6 vtable链接错误

本问题并非常见的undefined reference to vtable for MainWindow重复问题,我已掌握该编译错误的常规解决方法,但希望在不修改项目结构、也不显式将每个头文件添加到源文件列表的前提下解决问题。

项目结构

.
├── cmake
│   ├── ArcGISMapSDK.cmake
│   ├── BuildInfo.cmake
│   ├── buildinfo.h.in
│   ├── FindArcGISRuntime.cmake
│   └── QXlsx.cmake
├── CMakeLists.txt
├── src
│   ├── ArcGISTest
│   │   ├── CMakeLists.txt
│   │   ├── include
│   │   │   └── arcgis
│   │   │       └── mainwindow.h
│   │   ├── main.cpp
│   │   └── mainwindow.cpp
│   └── CMakeLists.txt
└── vcpkg.json

src/ArcGISTest下的CMakeLists.txt内容

include(BuildInfo)
include(ArcGISMapSDK)
include(QXlsx)

find_package(Qt6 COMPONENTS REQUIRED
    Core
    Widgets
    Gui
)

qt_standard_project_setup()

qt_add_executable(arcgis_app main.cpp)

target_include_directories(arcgis_app
    PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include"
)

target_link_libraries(arcgis_app
    PRIVATE
        Qt6::Core
        Qt6::Widgets
        Qt6::Gui
)

AddBuildInfo(arcgis_app)
AddArcGISMapSDK(arcgis_app)
AddQXlsx(arcgis_app)

include(GNUInstallDirs)

install(TARGETS arcgis_app
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

qt_generate_deploy_app_script(
    TARGET arcgis_app
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

target_sources(arcgis_app PRIVATE
    main.cpp
    mainwindow.cpp
)

当前链接错误

[build] /usr/bin/ld: /tmp/ccmNifr0.ltrans4.ltrans.o: in function `MainWindow::MainWindow(QWidget*)':
[build] /home/mohammad/Documents/SeeMake/src/ArcGISTest/mainwindow.cpp:27:(.text+0x707c): undefined reference to `vtable for MainWindow'

需求

是否存在无需修改项目结构、也无需像以下方式将头文件添加到源列表的情况下,让MOC正确运行的方法?

target_sources(arcgis_app PRIVATE
    main.cpp
    mainwindow.cpp
    mainwindow.h
)

内容的提问来源于stack exchange,提问作者Mohammad Rahimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 03:42:45