使用VS 2017中的cl.exe编译arm或arm64程序时缺少mspdbcore.dll

时间:2018-05-31 06:04:47

标签: visual-studio visual-studio-2017 arm cl

我尝试将最简单的C程序编译到ARM,直接使用Win10 x86-64环境中的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

1.c
c1: fatal error C1356: unable to find mspdbcore.dll

请注意,如果我定位x86代码,一切正常:" C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.14.26428 \ bin \ HostX86 \ x86 \ cl.exe时" / c 1.c

如果从VS中执行此操作,我可以编译并链接此程序。我错过了PATH上的内容吗?我似乎只有两个版本的mspdbcore.dll,一个在Hostx64 / x64中,另一个在Hostx86 / x86中; arm / arm64等效文件夹中没有任何内容。

档案:1.c:

int main(void) {
  return 0;
}

2 个答案:

答案 0 :(得分:0)

好的,事实证明问题与缺失或不正确的环境变量有关......

我为PATH,INCLUDE,LIB和LIBPATH设置了自定义覆盖,匹配样本ARM VS项目的“VC ++目录”选项提供的值,现在正在顺利编译。

编辑#1:我使用的设置,对于VS2017 :(可以在我上面提到的“VC ++目录”选项小部件中找到)

set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX86\arm;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\tools;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\ide;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\lib\ARM;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\atlmfc\lib\ARM;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS\lib\ARM;C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\ucrt\arm;C:\Program Files (x86)\Windows Kits\10\lib\10.0.17134.0\um\arm;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\arm;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Lib\um\arm
set LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\atlmfc\lib\ARM;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\lib\ARM;C:\Program Files (x86)\Windows Kits\10\References

答案 1 :(得分:0)

有些 VS 目录有 mspdbcore.dll,有些没有。在 LIBPATH 中声明路径并不能解决问题。

例如,.\bin\Hostx64\x64\.\bin\Hostx86\x86\mspdbcore.dll,但 .\bin\Hostx64\x86\ 没有,所以如果你想在 64 位系统上运行 32 位编译器,使用 .\bin\Hostx86\x86\cl.exe .\bin\Hostx64\x86\cl.exe