如何在Windows Powershell中使用MSVC的cl.exe直接编译C程序
PowerShell直接使用cl.exe编译C程序的配置方案
你遇到的C1034报错核心原因是仅添加了cl.exe的执行路径到系统Path变量,缺少MSVC编译必需的头文件搜索路径、库文件搜索路径、链接器默认依赖等环境变量。手动逐个配置容易出现版本不匹配、路径遗漏的问题,推荐直接调用Visual Studio Build Tools自带的官方初始化脚本完成配置:
方案一:调用官方初始化脚本(推荐)
步骤1:确认脚本路径
2019版Visual Studio Build Tools的64位环境初始化脚本默认路径为:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat
如果需要编译32位程序使用vcvars32.bat,编译ARM架构程序使用对应arm版本的脚本即可。
步骤2:单次生效配置
PowerShell无法直接继承bat脚本执行后的环境变量,执行以下命令即可完成当前窗口的环境初始化:
cmd /c "`"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat`" && powershell"
执行完成后,当前窗口直接运行cl hello.c即可正常编译。
步骤3:配置快捷指令(可选)
如果不想每次打开PowerShell都手动输入长命令,可以把初始化逻辑添加到PowerShell用户配置中:
- 在PowerShell中运行
notepad $PROFILE,如果提示文件不存在选择创建即可。 - 在配置文件末尾添加如下内容:
# 初始化MSVC编译环境 function Init-MSVC { cmd /c "`"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat`" && powershell" } # 移除下面一行的注释即可实现PowerShell启动自动加载编译环境 # Init-MSVC
- 保存文件后重启PowerShell,后续只要输入
Init-MSVC就能一键初始化编译环境。
方案二:手动配置环境变量(不推荐)
如果一定要手动配置系统环境变量,需要新增三个变量,注意替换路径中的版本号为你本地实际安装的版本:
INCLUDE变量需要添加以下目录:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\includeC:\Program Files (x86)\Windows Kits\10\Include\【你的Windows SDK版本号】\ucrtC:\Program Files (x86)\Windows Kits\10\Include\【你的Windows SDK版本号】\umC:\Program Files (x86)\Windows Kits\10\Include\【你的Windows SDK版本号】\shared
LIB变量需要添加以下目录:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\lib\x64C:\Program Files (x86)\Windows Kits\10\Lib\【你的Windows SDK版本号】\ucrt\x64C:\Program Files (x86)\Windows Kits\10\Lib\【你的Windows SDK版本号】\um\x64
LIBPATH变量添加的目录和LIB变量完全一致即可
手动配置对版本匹配要求高,容易出现路径遗漏的问题,仅建议有特殊需求的用户使用。
内容的提问来源于stack exchange,提问作者Jayson Gazeley
相关产品推荐
相关产品推荐

