首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual Studio 2019:使用vcvars64.bat从命令行构建C++不再有效

Visual Studio 2019:使用vcvars64.bat从命令行构建C++不再有效
EN

Stack Overflow用户
提问于 2020-01-10 02:33:50
回答 2查看 5K关注 0票数 1

在以前的Visual studio版本中,为了在命令行中使用cl cpp编译器编译应用程序,我运行了vcvars64.bat脚本,然后编译器按预期工作。

我最近安装了Visual Studio 2019。我在以下位置找到了vcvar64.bat脚本:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build

但是运行这个脚本并不能使cl编译器工作。即使是简单的3行cpp文件也无法编译,并出现像"stddef.h“文件未找到这样愚蠢的错误。如果您在IDE中使用编译器,它将按预期工作。

你需要做什么才能让VS2019 cpp编译器在命令行中工作?

EN

回答 2

Stack Overflow用户

发布于 2020-01-10 18:37:12

在我的visual studio 2019安装中,可以在C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt中找到stddef.hvcvars.bat应该将此路径添加到INCLUDE环境变量中。

运行以下命令可能会提供一些提示:

代码语言:javascript
运行
复制
set VSCMD_DEBUG=3
vcvars64.bat > out.txt

在我的安装中,搜索SDK的out.txt出现在bat文件正在搜索call :GetWin10SdkDir目录的部分。希望在某个地方会有一些错误消息。

以下是通过在我的机器上对vcvars64.bat的工作调用设置的附加环境变量,以供参考:

代码语言:javascript
运行
复制
CommandPromptType=Native
DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\
ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
Framework40Version=v4.0
FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework64\
FrameworkDIR64=C:\WINDOWS\Microsoft.NET\Framework64
FrameworkVersion=v4.0.30319
FrameworkVersion64=v4.0.30319
HTMLHelpDir=C:\Program Files (x86)\HTML Help Workshop
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\ATLMFC\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\cppwinrt
LIB=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\ATLMFC\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\lib\x64;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x64;
LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\ATLMFC\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17763.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.17763.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;
NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\
Path=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Team Tools\Performance Tools\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Team Tools\Performance Tools;C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common\VSPerfCollectionTools\vs2019\\x64;C:\Program Files (x86)\Microsoft Visual Studio\VS15Preview\Common\VSPerfCollectionTools\vs2019\;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\\MSBuild\Current\Bin;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\;
Platform=x64
UCRTVersion=10.0.17763.0
UniversalCRTSdkDir=C:\Program Files (x86)\Windows Kits\10\
VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\VC\
VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\
VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\
VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Redist\MSVC\14.24.28127\
VCToolsVersion=14.24.28314
VisualStudioVersion=16.0
VS160COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\
VSCMD_ARG_app_plat=Desktop
VSCMD_ARG_HOST_ARCH=x64
VSCMD_ARG_TGT_ARCH=x64
VSCMD_VER=16.4.2
VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\
WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17763.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.17763.0
WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
WindowsSDKLibVersion=10.0.17763.0\
WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\
WindowsSDKVersion=10.0.17763.0\
WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\
WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
__DOTNET_ADD_64BIT=1
__DOTNET_PREFERRED_BITNESS=64

如果所有这些都失败了,重新安装visual studio可能会解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2020-01-10 15:58:31

首先,您应该安装Visual Studio和可选的Desktop development with C++ workload,或者安装Visual Studio的命令行构建工具。

在命令行上构建C或C++程序之前,必须验证是否已安装这些工具,以及是否可以从命令行访问它们。Visual C++对命令行环境有复杂的要求,以查找它使用的工具、头文件和库。如果不做一些准备工作,就不能在普通的命令提示符窗口中使用Visual C++。幸运的是,Visual C++为您安装了启动开发人员命令提示符的快捷方式,该提示符为命令行生成设置了环境。不幸的是,开发人员命令提示符快捷方式的名称和位置在几乎每个版本的Visual C++和不同版本的Windows中都是不同的。

开发人员命令提示符快捷方式会自动为编译器和工具以及任何所需的头文件和库设置正确的路径。如果使用常规命令提示符窗口,则必须自行设置这些环境值。

如果在运行cl命令时出现错误,如"'cl‘未被识别为内部或外部命令、可操作程序或批处理文件“、error C1034或error LNK1104,则可能是未使用开发人员命令提示符,或者是Visual C++的安装有问题。

我建议您可以尝试直接使用Developer Command Prompt for VS。请打开“开始”菜单并选择“所有应用程序”。向下滚动并打开Visual Studio文件夹(不是Visual Studio应用程序)。选择Developer Command Prompt for VS以打开命令提示符窗口。

有关更多细节,我建议您可以参考DOC:Walkthrough: Compiling a Native C++ Program on the Command Line

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59670197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档