【发布时间】: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 文件,请使用
make或CMake或qmake等构建工具 -
@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