visual-studio-2019 - 导入项目中的 shlwapi.h 编译错误
问题描述
我正在尝试将 C++ MFC 项目从 Visual Studio 2008 导入 VS 2019 社区版。该项目最初来自我公司之外的很久以前(大概二十年)。我从名为 shlwapi.h 的 MFC 包含文件中收到数百个编译器错误,因为其中的许多符号是多重定义的。有没有其他人看到这个,我能做些什么呢?
编辑:以下是一些错误示例:
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Shlwapi.h(287,16): error C2084: function 'HRESULT SHLocalStrDupW(PCWSTR,PWSTR *)' already has a body
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Shlwapi.h(287): message : see previous definition of 'SHLocalStrDupW'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Shlwapi.h(293,16): error C2084: function 'HRESULT SHLocalStrDupA(PCSTR,PSTR *)' already has a body
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Shlwapi.h(293): message : see previous definition of 'SHLocalStrDupA'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Shlwapi.h(916,5): error C2365: 'URL_SCHEME_INVALID': redefinition; previous definition was 'enumerator'
当我点击第一行时,我被带到了这段代码:
// make the above helper function a bit easier to use in the HRESULT world
inline HRESULT SHLocalStrDupW(_In_ PCWSTR psz, _Outptr_result_maybenull_ PWSTR *ppsz)
{
*ppsz = StrDupW(psz);
return *ppsz ? S_OK : E_OUTOFMEMORY;
}
当我点击第二行,即“查看先前定义”的那一行时,我被带到了同一个地方。就像文件顶部的包含保护不起作用。
解决方案
推荐阅读
- set - 编程语言中集合背后的理论是什么?
- ruby-on-rails - 在 Rails 控制器中拆分参数
- javascript - NodeJS如何将文件转换为字符串
- c# - 使用通用方法提取枚举标志以列出?
- angular - 有没有机会在角度 ng2-fan-menu 中更改图标(从本地路径 img)
- macos - 如何在 macOS 上显示正在运行的进程列表?
- ruby-on-rails - 如何在 rails-postgres 中存储每个用户提交的表单?
- javascript - Timeline Vis - 使用子组排序强制子组 2 在子组 1 之后
- checkbox - Rails 编辑表单复选框不检查布尔真值
- python - 使 Tkinter 框架填充垂直轴