VS2017使用cl.exe编译ARM/ARM64程序时缺失mspdbcore.dll
解决VS2017 ARM版cl.exe编译时找不到mspdbcore.dll的问题
这个问题的核心是直接调用ARM架构的cl.exe时,缺少了Visual Studio调试组件的路径配置——mspdbcore.dll属于VS的共享调试工具,并不在ARM编译器的HostX64\arm目录下,而是存放在VS的IDE共享目录中。以下是具体的解决方法:
方法1:使用VS开发者命令提示符(推荐)
VS为不同架构提供了预配置的开发者命令提示符,它会自动设置所有必要的环境变量(包括PATH、INCLUDE、LIB等),无需手动配置:
- 打开「开始菜单」→ 找到「Visual Studio 2017」文件夹 → 选择「适用于VS2017的ARM开发人员命令提示符」
- 在该提示符中直接运行编译命令:
这样就能正常编译ARM架构的程序,因为命令提示符已经把包含mspdbcore.dll的路径加入到了PATH中。cl.exe /c 1.c
方法2:手动添加PATH路径(适合自定义环境)
如果必须手动调用cl.exe,需要先将mspdbcore.dll所在的目录添加到当前命令行的PATH中:
- 打开普通的命令提示符,先执行以下命令添加路径:
set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE;%PATH% - 然后再运行ARM版cl.exe的编译命令:
这样cl.exe就能找到mspdbcore.dll了。"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX64\arm\cl.exe" /c 1.c
为什么会出现这个问题?
- x86版cl.exe能正常运行,是因为其所在的
HostX86\x86目录可能和mspdbcore.dll的目录在默认PATH中,或者x86编译器的启动逻辑能自动找到该dll; - VS IDE中能正常编译,是因为IDE会自动加载所有必要的环境变量,包括调试组件的路径,无需手动配置;
- ARM/ARM64编译器目录下确实没有mspdbcore.dll,该文件是VS的共享组件,统一存放在
Common7\IDE目录下。
内容的提问来源于stack exchange,提问作者Nick




