问题软件环境:Windows 10 Pro + Visual Studio 2015 然后安装了 Windows 10 SDKWindows 10 SDK 是用这个 ISO 文件安装的:17134.12.180419-0858.rs4_release_svc_prod2_WindowsSDK.iso
在 Visual C++ 工程中,我将 Target platform 从 8.1 切换到 10.0.17134.0:
然后就发现原本编译正常的 C++ 工程现在编译出错了。在 link 的时候,出现以下错误:
1>—— Build started: Project: PHM-Hnode-Std-GuiLauncher,Configuration: Debug x64 —— 1> MainFrameBaseClass.cpp 1>MainFrame.cpp 1> main.cpp 1> Generating Code… 1>LINK : fatal errorLNK1158: cannot run ‘rc.exe’========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
调查由于以前在 Target Platform Version 设置为 8.1 的时候编译是正常的,所以我猜想,是不是这个 rc.exe 在 8.1 版本的 SDK 中存在,但在 10.0.17134.0 版本的 SDK 中被遗漏了。
果然在 8.1 版本的 SDK 中发现了 rc.exe,与此同时还看到了一个 rcdll.dll。
目录:
C:\Program Files (x86)\Windows Kits\8.1\bin\x86
Windows 10 SDK 的目录结构和 Windows 8.1 SDK 的目录结构有所不同:
在 10.0.17134.0 的目录下发现 rc.exe 和 rcdll.dll 是存在的:
所以说,rc.exe 和 rcdll.dll 文件并不缺失,只是编译的时候连接器没有找到它们。
解决我也不知道如何让链接器找到这两个文件,且找到正确的版本。所以我把
C:\Program Files (x86)\Windows Kits\8.1\bin\x86
这个目录下的 rc.exe 和 rcdll.dll 拷贝到我的 Visual C++ 的 VC/Bin 目录下:
D:\Apps\x86\Microsoft\Visual_Studio\v14.0\VC\bin
注意我的 Visual C++ 的安装目录可能和你的不同,你需要用你自己的的 VC/Bin 目录。
然后再编译程序,错误解决了:
1>—— Rebuild All started: Project: PHM-Hnode-Std-GuiLauncher,Configuration: Debug x64 —— 1> MainFrameBaseClass.cpp 1>MainFrame.cpp 1> main.cpp 1> Generating Code… 1>PHM-Hnode-Std-GuiLauncher.vcxproj ->D:\DevSpace\Gitpub\phm-prototype-180601\Dev\Build\MSVC_2015\Win32\Output\x64\Debug\PHM-Hnode-Std-GuiLauncher.exe1> PHM-Hnode-Std-GuiLauncher.vcxproj ->D:\DevSpace\Gitpub\phm-prototype-180601\Dev\Build\MSVC_2015\Win32\Output\x64\Debug\PHM-Hnode-Std-GuiLauncher.pdb(Partial PDB)========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========