You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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开发人员命令提示符」
  • 在该提示符中直接运行编译命令:
    cl.exe /c 1.c
    
    这样就能正常编译ARM架构的程序,因为命令提示符已经把包含mspdbcore.dll的路径加入到了PATH中。

方法2:手动添加PATH路径(适合自定义环境)

如果必须手动调用cl.exe,需要先将mspdbcore.dll所在的目录添加到当前命令行的PATH中:

  1. 打开普通的命令提示符,先执行以下命令添加路径:
    set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE;%PATH%
    
  2. 然后再运行ARM版cl.exe的编译命令:
    "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX64\arm\cl.exe" /c 1.c
    
    这样cl.exe就能找到mspdbcore.dll了。

为什么会出现这个问题?

  • x86版cl.exe能正常运行,是因为其所在的HostX86\x86目录可能和mspdbcore.dll的目录在默认PATH中,或者x86编译器的启动逻辑能自动找到该dll;
  • VS IDE中能正常编译,是因为IDE会自动加载所有必要的环境变量,包括调试组件的路径,无需手动配置;
  • ARM/ARM64编译器目录下确实没有mspdbcore.dll,该文件是VS的共享组件,统一存放在Common7\IDE目录下。

内容的提问来源于stack exchange,提问作者Nick

火山引擎 最新活动