解决在windows下VS2010编译coldet20的出现的错误:error MSB8008: 指定的平台工具集(Windows7.1SDK)未安装或无效。请确保选择受支持的 PlatformToo

本文介绍了解决Visual Studio编译时出现MSB8008错误的方法。通过调整项目的平台工具集设置,从指向无效的Windows7.1SDK更改为v100,成功解决了编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自http://tunps.com/error-msb8008

本机首先安装了VS 2010。然后昨天才安装上VSSSDK7.1。今天编译一个项目报错:

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.Targets(514,5): error MSB8008: 指定的平台工具集(Windows7.1SDK)未安装或无效。请确保选择受支持的 PlatformToolset 值。

VS英文版报错:

Error 31 error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.

打开文件 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.Targets , Ctrl+G跳转到513,514行,内容如下:

<!-- Error out if the project references a missing platform toolset -->
    <VCMessage Code="MSB8008" Type="Error" Arguments="$(PlatformToolset)" Condition="!(exists('$(VCTargetsPath)\Platforms\x64\PlatformToolsets\$(PlatformToolset)\Microsoft.Cpp.x64.$(PlatformToolset).targets'))"/>

看来是Targets检查到平台工作集没找到?啥?你不知道啥叫平台工作集(PlatformToolSets)?打开 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets 目录你应该能看到两个目录v90和v100这就是VC 2010的两台平台工作集。作用通俗的叫就是配置的集合。

打开项目属性->配置属性->平台工作集,发现了一个叫Windows7.1SDK的东东。打开VS 2010里面的宏,搜索$(PlatformToolSets)的值也是Windows7.1SDK。这个就是VSSSDK7.1加上的。我们把这个修改为v100。问题就此解决。

error-msb8008
#define _NO_CRT_STDIO_INLINE #define _IMAGEHLP_SOURCE_ #define _IMAGEHLP64 #include <DbgHelp.h> #pragma comment(lib, "Dbghelp.lib") #include <imagehlp.h> #pragma comment(lib, "imagehlp.lib") // 生成 DMP 文件的函数 void GenerateCrashDump(PEXCEPTION_POINTERS pExceptionInfo) { // 获取桌面路径作为保存位置 wchar_t desktopPath[MAX_PATH]; SHGetFolderPathW(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath); // 构造文件名 (带时间戳) wchar_t dumpPath[MAX_PATH]; SYSTEMTIME st; GetLocalTime(&st); swprintf_s(dumpPath, L"%s\\Crash_%04d%02d%02d_%02d%02d%02d.dmp", desktopPath, st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); // 创建文件 HANDLE hFile = CreateFileW( dumpPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile != INVALID_HANDLE_VALUE) { MINIDUMP_EXCEPTION_INFORMATION dumpInfo; dumpInfo.ThreadId = GetCurrentThreadId(); dumpInfo.ExceptionPointers = pExceptionInfo; dumpInfo.ClientPointers = TRUE; // 写入 DMP 文件 (包含模块和线程信息) MiniDumpWriteDump( GetCurrentProcess(), GetCurrentProcessId(), hFile, static_cast<MINIDUMP_TYPE>( MiniDumpWithDataSegs | MiniDumpWithHandleData | MiniDumpWithUnloadedModules), &dumpInfo, NULL, NULL); CloseHandle(hFile); } } // 顶级异常处理器 LONG WINAPI TopLevelExceptionHandler(PEXCEPTION_POINTERS pExceptionInfo) { GenerateCrashDump(pExceptionInfo); return EXCEPTION_EXECUTE_HANDLER; // 结束程序 } // 初始化崩溃处理器 void InitCrashReporting() { SetUnhandledExceptionFilter(TopLevelExceptionHandler); } 生成开始于 16:59... 1>------ 已启动生成: 项目: pdf2word, 配置: Debug Win32 ------ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(392,5): warning MSB8028: The intermediate directory (C:\Users\admin\Desktop\wzl\project\FyPDFConverter\Temp\Debug\) contains files shared from another project (base.vcxproj, DuiLib.vcxproj, FFileTool.vcxproj). This can lead to incorrect clean and rebuild behavior. 1>stdafx.cpp 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1540): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(3056): warning C4091: “typedef ”: 没有声明变量时忽略“”的左侧 1>c:\users\admin\desktop\wzl\project\fypdfconverter\pdf2word\format.h(45): warning C4018: “>=”: 有符号/无符号不匹配 1>c:\users\admin\desktop\wzl\project\fypdfconverter\pdf2word\format.h(66): warning C4018: “>=”: 有符号/无符号不匹配 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\shlobj.h(1151): warning C4091: “typedef ”: 没有声明变量时忽略“tagGPFIDL_FLAGS”的左侧 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(136): error C2011: “_LOADED_IMAGE”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(133): note: 参见“_LOADED_IMAGE”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(705): error C2011: “_IMAGE_DEBUG_INFORMATION”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(376): note: 参见“_IMAGE_DEBUG_INFORMATION”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(877): error C2011: “_MODLOAD_DATA”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(548): note: 参见“_MODLOAD_DATA”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(885): error C2011: “_MODLOAD_CVMISC”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(556): note: 参见“_MODLOAD_CVMISC”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(894): error C2011: “_MODLOAD_PDBGUID_PDBAGE”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(565): note: 参见“_MODLOAD_PDBGUID_PDBAGE”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(904): error C2365: “AddrMode1616”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(575): note: 参见“AddrMode1616”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(905): error C2365: “AddrMode1632”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(576): note: 参见“AddrMode1632”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(906): error C2365: “AddrModeReal”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(577): note: 参见“AddrModeReal”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(908): error C2365: “AddrModeFlat”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(579): note: 参见“AddrModeFlat”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(908): error C2371: “ADDRESS_MODE”: 重定义;不同的基类型 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(579): note: 参见“ADDRESS_MODE”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(910): error C2011: “_tagADDRESS64”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(581): note: 参见“_tagADDRESS64”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(920): error C2011: “_tagADDRESS”:“struct”类型重定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(591): note: 参见“_tagADDRESS”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(932): error C2084: 函数“void Address32To64(LPADDRESS,LPADDRESS64)”已有主体 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(599): note: 参见“Address32To64”的前一个定义 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(933): error C2027: 使用了定义类型“_tagADDRESS64” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(581): note: 参见“_tagADDRESS64”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(933): error C2227: “->Offset”的左边必须指向类/结构/联合/泛型类型 ..... 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1405): note: 参见“_IMAGEHLP_CBA_READ_MEMORY”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(1742): error C2365: “sevInfo”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1413): note: 参见“sevInfo”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(1743): error C2365: “sevProblem”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1414): note: 参见“sevProblem”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(1744): error C2365: “sevAttn”: 重定义;以前的定义是“枚举数” 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\dbghelp.h(1415): note: 参见“sevAttn”的声明 1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\imagehlp.h(1744): fatal error C1003: 错误计数超过 100;正在停止编译 1>已完成生成项目“pdf2word.vcxproj”的操作 - 失败。 ========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ========== ========== 生成 于 16:59 完成,耗时 02.337 秒 ==========
06-13
1>------ 已启动全部重新生成: 项目: casting_ShovelBaseHook, 配置: NX10 x64 ------ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\x64\PlatformToolsets\v140_xp\Toolset.targets(36,5): warning MSB8003: Could not find WindowsSdkDir_71A variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(366,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. 1>tinyxml2.cpp 1>nx_link.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afxv_w32.h(25): fatal error C1083: 无法打开包括文件: “winsdkver.h”: No such file or directory 1>jfun.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\atlbase.h(68): fatal error C1083: 无法打开包括文件: “winsock2.h”: No such file or directory 1>fun_import.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afxv_w32.h(25): fatal error C1083: 无法打开包括文件: “winsdkver.h”: No such file or directory 1>fun.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afxv_w32.h(25): fatal error C1083: 无法打开包括文件: “winsdkver.h”: No such file or directory 1>casting_ShovelBaseHook_form.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afxv_w32.h(25): fatal error C1083: 无法打开包括文件: “winsdkver.h”: No such file or directory 1>casting_ShovelBaseHook.cpp 1>c:\program files (x86)\microsoft visual studio 14.0\vc\atlmfc\include\afxv_w32.h(25): fatal error C1083: 无法打开包括文件: “winsdkver.h”: No such file or directory
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值