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

使用CMake创建的VS Qt项目编译时出现LNK2019链接错误

解决QDomDocument相关LNK2019未解析外部符号错误

这个问题太常见了!你碰到的是Qt模块链接遗漏的典型问题——QDomDocument属于Qt的Xml模块,而CMake不会自动帮你链接所有Qt模块,所以只有用到Dom相关类时才会触发链接错误,其他常用Qt类(比如QString、QWidget)因为已经链接了Core/Widgets模块,所以能正常编译。

给你几个具体的解决步骤:

  • 首先检查你的CMakeLists.txt,确保在find_package时包含了Xml模块:

    # Qt5的写法
    find_package(Qt5 REQUIRED COMPONENTS Core Widgets Xml)
    
    # 如果是Qt6,改成下面这样
    find_package(Qt6 REQUIRED COMPONENTS Core Widgets Xml)
    
  • 然后把Xml模块添加到目标链接库中,假设你的项目名称是Graph,就加上:

    # Qt5版本
    target_link_libraries(Graph PRIVATE Qt5::Core Qt5::Widgets Qt5::Xml)
    
    # Qt6版本
    target_link_libraries(Graph PRIVATE Qt6::Core Qt6::Widgets Qt6::Xml)
    
  • 最后,重新生成CMake缓存并编译项目——在VS里可以右键项目→CMake→Configure,然后再执行Build操作。

原理其实很直白:Qt的每个模块对应单独的动态库,Xml模块的函数实现都在Qt5Xml.dll(或Qt6Xml.dll)里,没链接这个库的话,链接器就找不到QDomNode这些类的构造/析构函数,自然就报LNK2019错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:43:43