簡體   English   中英

使用 VS 2017 中的 cl.exe 編譯 arm 或 arm64 程序時缺少 mspdbcore.dll

[英]Missing mspdbcore.dll when compiling arm or arm64 programs with cl.exe from VS 2017

我嘗試將最簡單的 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”/ 1.c

如果在 VS 中進行,我可以很好地編譯和鏈接這個程序。 我在 PATH 上遺漏了什么嗎? 也好像我只有兩個版本的mspdbcore.dll,一個在Hostx64/x64,另一個在Hostx86/x86; arm/arm64 等效文件夾中沒有任何內容。

文件:1.c:

int main(void) {
  return 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

有些 VS 目錄有mspdbcore.dll ,有些沒有。 在 LIBPATH 中聲明路徑並不能修復它。

例如, .\\bin\\Hostx64\\x64\\.\\bin\\Hostx86\\x86\\mspdbcore.dll ,但.\\bin\\Hostx64\\x86\\沒有,所以如果你想在一個64 位系統,使用.\\bin\\Hostx86\\x86\\cl.exe而不是.\\bin\\Hostx64\\x86\\cl.exe

暫無
暫無

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

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