簡體   English   中英

Visual Studio 2019:使用 vcvars64.bat 從命令行構建 C++ 不再有效

[英]Visual Studio 2019: build C++ from command line with vcvars64.bat doesn't work anymore

為了在 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 編譯器在命令行中工作?

在我的 Visual Studio 2019 安裝中, stddef.h位於C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.17763.0\\ucrt\u003c/code> 。 vcvars.bat應該將此路徑添加到INCLUDE環境變量中。

運行以下命令可能會提供一些提示:

set VSCMD_DEBUG=3
vcvars64.bat > out.txt

在我的安裝中搜索 out.txt for call :GetWin10SdkDir來到了 bat 文件正在搜索 SDK 目錄的部分。 希望某處會有一些錯誤消息。

作為參考,這些是通過在我的機器上對 vcvars64.bat 的工作調用設置的附加環境變量:

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 可能會解決該問題。

首先,您應該安裝 Visual Studio 和可選的帶有 C++ 工作負載的桌面開發,或 Visual Studio 的命令行構建工具。

在命令行上構建 C 或 C++ 程序之前,您必須驗證這些工具是否已安裝,並且您可以從命令行訪問它們。 Visual C++ 對命令行環境有復雜的要求,以查找它使用的工具、頭文件和庫。 如果不做一些准備,就不能在普通的命令提示符窗口中使用 Visual C++。 幸運的是,Visual C++ 為您安裝了快捷方式來啟動開發人員命令提示符,該提示符為命令行構建設置了環境。 不幸的是,開發人員命令提示符快捷方式的名稱及其所在的位置在幾乎每個版本的 Visual C++ 和不同版本的 Windows 中都不同。

開發人員命令提示符快捷方式會自動為編譯器和工具以及任何所需的頭文件和庫設置正確的路徑。 如果您使用常規命令提示符窗口,則必須自己設置這些環境值。

如果您在運行 cl 命令時遇到諸如“'cl' 不是內部或外部命令、可運行的程序或批處理文件”、錯誤 C1034 或錯誤 LNK1104 之類的錯誤,那么要么您沒有使用開發人員命令提示,或者您的 Visual C++ 安裝有問題。

我建議您可以嘗試直接使用Developer Command Prompt for VS 請打開開始菜單並選擇所有應用程序。 向下滾動並打開 Visual Studio 文件夾(不是 Visual Studio 應用程序)。 選擇 Developer Command Prompt for VS 打開命令提示符窗口。

有關更多詳細信息,我建議您可以參考 DOC: 演練:在命令行上編譯本機 C++ 程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM