首页 > 解决方案 > 导入项目中的 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;
}

当我点击第二行,即“查看先前定义”的那一行时,我被带到了同一个地方。就像文件顶部的包含保护不起作用。

标签: visual-studio-2019

解决方案


推荐阅读