From 8d72f3c5f493ddbda71a0066398644c876e09727 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Thu, 16 Aug 2018 20:11:12 +0200 Subject: [PATCH] Fix multiple definition error when using clang on Windows --- src/msw/dirdlg.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/msw/dirdlg.cpp b/src/msw/dirdlg.cpp index 84557d7c95..b0b9ed84d9 100644 --- a/src/msw/dirdlg.cpp +++ b/src/msw/dirdlg.cpp @@ -73,12 +73,15 @@ struct IShellItem : public IUnknown #endif // #ifndef __IShellItem_INTERFACE_DEFINED__ +#if defined(__VISUALC__) || !defined(__IShellItem_INTERFACE_DEFINED__) // Define this GUID in any case, even when __IShellItem_INTERFACE_DEFINED__ is // defined in the headers we might still not have it in the actual uuid.lib, -// this happens with at least VC7 used with its original (i.e. not updated) SDK -// and there is no harm in defining the GUID unconditionally. +// this happens with at least VC7 used with its original (i.e. not updated) SDK. +// clang complains about multiple definitions, so only define it unconditionally +// when using a Visual C compiler. DEFINE_GUID(IID_IShellItem, 0x43826D1E, 0xE718, 0x42EE, 0xBC, 0x55, 0xA1, 0xE2, 0x61, 0xC3, 0x7B, 0xFE); +#endif struct IShellItemFilter; struct IFileDialogEvents;