【问题标题】:Using Qt with Visual Studio Code (Windows)将 Qt 与 Visual Studio 代码一起使用 (Windows)
【发布时间】:2020-10-09 13:00:33
【问题描述】:

以下已安装:

  • Visual Studio 代码 (1.45.1)
  • Visual Studio 2019 社区(为了使用 MSVC cl.exe 编译器)
  • Qt 5.15.0(安装到 C:\Qt)

Visual Studio Code 在运行Visual Studio Command Prompt 后已启动,以便为cl.exe 正确设置环境。 ms-vscode.cpptools 扩展已安装在 Visual Studio Code 中,includePath 设置为:

"includePath": [
    "${workspaceFolder}/**",
    "${INCLUDE}",
    "C:/Qt/5.15.0/msvc2019_64/include/**"
],

这个文件hw.cpp编译并运行良好:

#include <iostream>
int main()
{
    std::cout << "Hello world!";
    return 0;
}

tasks.json中使用的命令是:

"command": "cl.exe",
"args": [
    "/Zi",
    "/EHsc",
    "/Fe:",
    "${fileDirname}\\${fileBasenameNoExtension}.exe",
    "${file}"
],

或者,从 Visual Studio Code 的内置终端中,命令“cl /EHsc /MD /O2 hw.cpp /link /out:hw.exe”可以正确编译所有内容,并且可以执行 hw.exe

但是当我尝试如下使用 Qt 时编译失败:

#include <QString>
int main()
{
    QString test("Hello world!");
    qDebug() << test;
    return 0;
}

编译器报告“致命错误 C1083:无法打开包含文件:'QString':没有这样的文件或目录”。 IntelliSense 确实找到了 QString.h,当我按下 Ctrl 并单击 QString(在顶部)时会打开它。

我错过了什么?

更新

感谢 @rioV8 的 cmets,我调查了 cl.exe/link 选项。任务参数已更新为:

"args": [
    "/EHsc",
    "/MD",
    "/O2",
    "/IC:\\Qt\\5.15.0\\msvc2019_64\\include",
    "/IC:\\Qt\\5.15.0\\msvc2019_64\\include\\QtCore",
    "${file}",
    "/link",
    "/LIBPATH:C:\\Qt\\5.15.0\\msvc2019_64\\lib",
    "Qt5Core.lib",
    "qtmain.lib",
    "/OUT:${fileDirname}\\${fileBasenameNoExtension}.exe"
],

这稍微改善了一些情况。 hw.cpp 现在编译并生成 hw.obj,但现在我得到链接器错误(每个 .lib 一个):

warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'

后面是fatal error LNK1120: 2 unresolved externals

越来越近,但仍然没有链接。

【问题讨论】:

  • 将路径添加到编译行,您已将它们添加到智能搜索路径,而不是编译器搜索路径。如果您有多个 cpp 文件,请使用 makeCMakeqmake 等构建工具
  • @rioV8:谢谢。我查看了cl.exe 的命令行选项,但无法让它们工作。我尝试添加:“/experimental:external”、“/external:IC:\\Qt\\5.15.0\\msvc2019_64\\include”、“/external:IC:\\Qt\\5.15.0\\msvc2019_64 \\include\\QtCore", "/external:W0",但我仍然遇到同样的错误。您知道添加到编译器搜索路径的正确语法吗?
  • @rioV8:好的,谢谢。我设法改进了语法,以便找到QString.h。需要:“/IC:\\Qt\\5.15.0\\msvc2019_64\\include”、“/IC:\\Qt\\5.15.0\\msvc2019_64\\include\\QtCore”。但下一个问题是我需要链接到 Qt 库,现在有很多 error LNK2019: unresolved external symbol 错误。将这些详细信息添加到问题中。
  • 只需查看有关指定库目录和所需库的选项即可。可能/L

标签: c++ qt visual-studio-code


【解决方案1】:

最近在 KDAB 博客上有一个详细的指南。

Qt 开发者的 VS Code 概述:

技术指南:

技术指南中的步骤与您描述的问题非常相似;-)

【讨论】:

  • 会看看,如果我可以让它工作,请告诉你......谢谢!
  • 还没有完全开始工作,但这是一个很好的方向,当我开始工作时,我会在这里发布工作更新。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 2022-01-22
  • 2018-06-08
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多