From 14da7b1c93427a5fe7c73df5101d7d3db9a0d8ed Mon Sep 17 00:00:00 2001
From: Patrik Stridvall <ps@leissner.se>
Date: Sat, 12 Jun 1999 10:53:06 +0000
Subject: [PATCH] Added extern "C" if __cplusplus is defined.

---
 include/ddeml.h                       | 8 ++++++++
 include/ddraw.h                       | 8 ++++++++
 include/dplay.h                       | 8 ++++++++
 include/dplobby.h                     | 8 ++++++++
 include/dsound.h                      | 7 +++++++
 include/imagehlp.h                    | 8 ++++++++
 include/lzexpand.h                    | 8 ++++++++
 include/msacm.h                       | 8 ++++++++
 include/ole2.h                        | 8 ++++++++
 include/shell.h                       | 7 +++++++
 include/shellapi.h                    | 8 ++++++++
 include/shlobj.h                      | 8 ++++++++
 include/tapi.h                        | 8 ++++++++
 include/wine/obj_cache.h              | 8 +++++++-
 include/wine/obj_channel.h            | 7 +++++++
 include/wine/obj_clientserver.h       | 7 +++++++
 include/wine/obj_commdlgbrowser.h     | 7 +++++++
 include/wine/obj_connection.h         | 8 ++++++--
 include/wine/obj_contextmenu.h        | 7 +++++++
 include/wine/obj_control.h            | 8 +++++++-
 include/wine/obj_dockingwindowframe.h | 7 +++++++
 include/wine/obj_dragdrop.h           | 8 ++++++++
 include/wine/obj_enumidlist.h         | 8 ++++++++
 include/wine/obj_extracticon.h        | 8 ++++++++
 include/wine/obj_inplace.h            | 7 +++++++
 include/wine/obj_marshal.h            | 7 +++++++
 include/wine/obj_misc.h               | 7 +++++++
 include/wine/obj_moniker.h            | 7 +++++++
 include/wine/obj_olefont.h            | 7 +++++++
 include/wine/obj_oleobj.h             | 8 ++++++++
 include/wine/obj_oleundo.h            | 8 +++++++-
 include/wine/obj_oleview.h            | 7 ++++++-
 include/wine/obj_picture.h            | 8 +++++++-
 include/wine/obj_property.h           | 7 +++++++
 include/wine/obj_propertystorage.h    | 7 +++++++
 include/wine/obj_shellbrowser.h       | 7 +++++++
 include/wine/obj_shellextinit.h       | 7 +++++++
 include/wine/obj_shellfolder.h        | 7 +++++++
 include/wine/obj_shelllink.h          | 8 ++++++++
 include/wine/obj_shellview.h          | 7 +++++++
 include/wine/obj_storage.h            | 7 +++++++
 include/winreg.h                      | 8 ++++++++
 include/winsock.h                     | 8 ++++++++
 include/winver.h                      | 8 ++++++++
 44 files changed, 325 insertions(+), 7 deletions(-)

diff --git a/include/ddeml.h b/include/ddeml.h
index 284c636882c..ec147ed3e58 100644
--- a/include/ddeml.h
+++ b/include/ddeml.h
@@ -10,6 +10,10 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /* Codepage Constants
  */
 
@@ -334,4 +338,8 @@ UINT    WINAPI DdeGetLastError(DWORD);
 UINT16    WINAPI DdeQueryConvInfo16(HCONV,DWORD,LPCONVINFO16);
 UINT      WINAPI DdeQueryConvInfo(HCONV,DWORD,LPCONVINFO);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE__DDEML_H */
diff --git a/include/ddraw.h b/include/ddraw.h
index fbf558263ed..03ef896b52c 100644
--- a/include/ddraw.h
+++ b/include/ddraw.h
@@ -10,6 +10,10 @@
 #include "wingdi.h" /* PALETTE stuff ... */
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #ifndef	DIRECTDRAW_VERSION
 #define	DIRECTDRAW_VERSION	0x0500
 #endif /* DIRECTDRAW_VERSION */
@@ -1509,4 +1513,8 @@ HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW,LPVOID);
 #define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
 HRESULT WINAPI DirectDrawCreateClipper(DWORD,LPDIRECTDRAWCLIPPER*,LPUNKNOWN);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_DDRAW_H */
diff --git a/include/dplay.h b/include/dplay.h
index 9445d70ffa2..54d359bbc6f 100644
--- a/include/dplay.h
+++ b/include/dplay.h
@@ -3,6 +3,10 @@
 
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #include "pshpack1.h"
 
 /*****************************************************************************
@@ -585,4 +589,8 @@ ICOM_DEFINE(IDirectPlay3,IDirectPlay2)
 #define IDirectPlay3_GetPlayerFlags(p,a,b)                 ICOM_CALL2(GetPlayerFlags,p,a,b)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_DPLAY_H */
diff --git a/include/dplobby.h b/include/dplobby.h
index 8339a65b1a9..41944b74fdc 100644
--- a/include/dplobby.h
+++ b/include/dplobby.h
@@ -3,6 +3,10 @@
 
 #include "dplay.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #include "pshpack1.h"
 
 /*****************************************************************************
@@ -148,4 +152,8 @@ ICOM_DEFINE(IDirectPlayLobby2,IDirectPlayLobby)
 #define IDirectPlayLobby2_CreateCompoundAddress(p,a,b,c,d) ICOM_CALL4(CreateCompoundAddress,p,a,b,c,d)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_DPLOBBY_H */
diff --git a/include/dsound.h b/include/dsound.h
index 542488f9c26..7aff0205962 100644
--- a/include/dsound.h
+++ b/include/dsound.h
@@ -5,6 +5,10 @@
 #include "mmsystem.h"
 #include "d3d.h"			/*FIXME: Need to break out d3dtypes.h */
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -481,5 +485,8 @@ ICOM_DEFINE(IDirectSound3DBuffer,IUnknown)
  */
 /* FIXME: not implemented yet */
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_DSOUND_H */
diff --git a/include/imagehlp.h b/include/imagehlp.h
index 91c3739d197..4ef83fa8c26 100644
--- a/include/imagehlp.h
+++ b/include/imagehlp.h
@@ -8,6 +8,10 @@
 #include "windef.h"
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /***********************************************************************
  * Types
  */
@@ -812,6 +816,10 @@ BOOL WINAPI UpdateDebugInfoFileEx(
 
 extern HANDLE IMAGEHLP_hHeap;
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_IMAGEHLP_H */
 
 
diff --git a/include/lzexpand.h b/include/lzexpand.h
index 3fbb28485d2..d9b8de6f493 100644
--- a/include/lzexpand.h
+++ b/include/lzexpand.h
@@ -9,6 +9,10 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #define LZERROR_BADINHANDLE	-1	/* -1 */
 #define LZERROR_BADOUTHANDLE	-2	/* -2 */
 #define LZERROR_READ		-3	/* -3 */
@@ -42,4 +46,8 @@ INT       WINAPI GetExpandedNameA(LPCSTR,LPSTR);
 INT       WINAPI GetExpandedNameW(LPCWSTR,LPWSTR);
 #define     GetExpandedName WINELIB_NAME_AW(GetExpandedName)
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_LZEXPAND_H */
diff --git a/include/msacm.h b/include/msacm.h
index 431845c5c81..9b24586d6ff 100644
--- a/include/msacm.h
+++ b/include/msacm.h
@@ -10,6 +10,10 @@
 #include "mmsystem.h"
 #include "mmreg.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /***********************************************************************
  * Defines/Enums
  */
@@ -977,6 +981,10 @@ PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver);
 PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj);
 HDRVR MSACM_OpenDriverProc(DRIVERPROC pfnDriverProc);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_MSACM_H */
 
 
diff --git a/include/ole2.h b/include/ole2.h
index 14629b7b37d..af0851e4edd 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -10,6 +10,10 @@
 #include "oleidl.h"
 #include "oleauto.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #define OLEIVERB_PRIMARY            (0L)
 #define OLEIVERB_SHOW               (-1L)
 #define OLEIVERB_OPEN               (-2L)
@@ -91,5 +95,9 @@ HRESULT     WINAPI OleCreateDefaultHandler(REFCLSID  clsid,
 					   LPVOID*   ppvObj);
 HRESULT     WINAPI CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_OLE2_H */
 
diff --git a/include/shell.h b/include/shell.h
index 570077fbc98..2621b281733 100644
--- a/include/shell.h
+++ b/include/shell.h
@@ -6,6 +6,9 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
 
 /****************************************************************************
 * shell 16
@@ -208,4 +211,8 @@ DWORD WINAPI SHFree(LPVOID x);
 #define CSIDL_COOKIES		0x0021
 #define CSIDL_HISTORY		0x0022
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_SHELL_H */
diff --git a/include/shellapi.h b/include/shellapi.h
index 4291a475b46..90e9352eb3a 100644
--- a/include/shellapi.h
+++ b/include/shellapi.h
@@ -3,6 +3,10 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #include "pshpack1.h"
 
 /******************************************
@@ -264,6 +268,10 @@ BOOL      WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
 BOOL      WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
 #define     ShellAbout WINELIB_NAME_AW(ShellAbout)
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #include "poppack.h"
 
 #endif /* _WINE_SHELLAPI_H */
diff --git a/include/shlobj.h b/include/shlobj.h
index 4ff1a7dfc90..880fc74fbbe 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -18,6 +18,10 @@
 #include "commctrl.h"
 #include "prsht.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare interfaces
  */
@@ -398,4 +402,8 @@ void WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask, DWORD dwx);
 
 /**********************************************************************/
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_SHLOBJ_H */
diff --git a/include/tapi.h b/include/tapi.h
index a7fe1dbe994..4a80afaf6b3 100644
--- a/include/tapi.h
+++ b/include/tapi.h
@@ -9,6 +9,10 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 typedef HANDLE HCALL, *LPHCALL;
 typedef HANDLE HLINE, *LPHLINE;
 typedef HANDLE HLINEAPP, *LPHLINEAPP;
@@ -624,4 +628,8 @@ DWORD WINAPI phoneShutdown(HPHONEAPP);
 DWORD WINAPI tapiGetLocationInfo(LPSTR,LPSTR);
 DWORD WINAPI tapiRequestMakeCall(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_TAPI_H */
diff --git a/include/wine/obj_cache.h b/include/wine/obj_cache.h
index 8e33d0708b2..665fc1fd191 100644
--- a/include/wine/obj_cache.h
+++ b/include/wine/obj_cache.h
@@ -10,6 +10,9 @@
 
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
 
 /*****************************************************************************
  * Declare the structures
@@ -111,9 +114,12 @@ ICOM_DEFINE(IOleCacheControl,IUnknown)
 #define IOleCacheControl_OnRun(p,a)                 ICOM_CALL1(UpdateCache,p,a)
 #define IOleCacheControl_OnStop(p)                  ICOM_CALL (OnStop,p)
 #endif
-				 
 
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINE_OBJ_CONTROL_H */
 
 
diff --git a/include/wine/obj_channel.h b/include/wine/obj_channel.h
index b15395013fe..72164880142 100644
--- a/include/wine/obj_channel.h
+++ b/include/wine/obj_channel.h
@@ -7,6 +7,10 @@
 
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -182,5 +186,8 @@ ICOM_DEFINE(IRpcStubBuffer,IUnknown)
 #define IRpcStubBuffer_DebugServerRelease(p,a)        ICOM_CALL1(DebugServerRelease,p,a)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_CHANNEL_H */
diff --git a/include/wine/obj_clientserver.h b/include/wine/obj_clientserver.h
index 807cbec3c9a..be7a396f050 100644
--- a/include/wine/obj_clientserver.h
+++ b/include/wine/obj_clientserver.h
@@ -7,6 +7,10 @@
 
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -255,5 +259,8 @@ HRESULT WINAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
 /* FIXME: not implemented */
 HRESULT WINAPI CoResumeClassObjects(void);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_CLIENTSERVER_H */
diff --git a/include/wine/obj_commdlgbrowser.h b/include/wine/obj_commdlgbrowser.h
index 4e2a264b22f..5d523219829 100644
--- a/include/wine/obj_commdlgbrowser.h
+++ b/include/wine/obj_commdlgbrowser.h
@@ -10,6 +10,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_shellview.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 DEFINE_SHLGUID(IID_ICommDlgBrowser,     0x000214F1L, 0, 0);
 typedef struct 	ICommDlgBrowser ICommDlgBrowser, *LPCOMMDLGBROWSER;
 
@@ -40,5 +44,8 @@ ICOM_DEFINE(ICommDlgBrowser,IUnknown)
 #define ICommDlgBrowser_IncludeObject(p,a,b)	ICOM_CALL2(IncludeObject,p,a,b)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_ICOMMDLGBROWSER_H */
diff --git a/include/wine/obj_connection.h b/include/wine/obj_connection.h
index 733a18acae8..ed1ccbf1332 100644
--- a/include/wine/obj_connection.h
+++ b/include/wine/obj_connection.h
@@ -10,6 +10,9 @@
 
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
 
 /*****************************************************************************
  * Declare the structures
@@ -144,8 +147,9 @@ ICOM_DEFINE(IEnumConnectionPoints,IUnknown)
 #define IEnumConnectionPoints_Clone(p,a)                 ICOM_CALL1(Clone,p,a)
 #endif
 				
-
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_CONTROL_H */
 
diff --git a/include/wine/obj_contextmenu.h b/include/wine/obj_contextmenu.h
index 3903b4361c5..e8dccc4aed2 100644
--- a/include/wine/obj_contextmenu.h
+++ b/include/wine/obj_contextmenu.h
@@ -9,6 +9,10 @@
 #include "winuser.h"
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 DEFINE_SHLGUID(IID_IContextMenu,        0x000214E4L, 0, 0);
 DEFINE_SHLGUID(IID_IContextMenu2,       0x000214F4L, 0, 0);
 typedef struct IContextMenu IContextMenu, *LPCONTEXTMENU;
@@ -124,5 +128,8 @@ ICOM_DEFINE(IContextMenu,IUnknown)
 #define IContextMenu_HandleMenuMsg(p,a,b,c)		ICOM_CALL3(HandleMenuMsg,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_ICONTEXTMENU_H */
diff --git a/include/wine/obj_control.h b/include/wine/obj_control.h
index 38e2bf2aecb..757eaa65540 100644
--- a/include/wine/obj_control.h
+++ b/include/wine/obj_control.h
@@ -11,6 +11,10 @@
 #include "winbase.h"
 #include "wine/obj_oleaut.h" /* for DISPID */
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Declare the structures
  */
@@ -463,6 +467,8 @@ ICOM_DEFINE(IProvideClassInfo2,IProvideClassInfo)
 #define IProvideClassInfo2_GetGUID(p,a,b)          ICOM_CALL2(GetGUID,p,a,b)
 #endif
 
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_CONTROL_H */
diff --git a/include/wine/obj_dockingwindowframe.h b/include/wine/obj_dockingwindowframe.h
index 5573f119787..d103ff5abb8 100644
--- a/include/wine/obj_dockingwindowframe.h
+++ b/include/wine/obj_dockingwindowframe.h
@@ -10,6 +10,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_inplace.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 typedef struct IDockingWindowFrame IDockingWindowFrame,	*LPDOCKINGWINDOWFRAME;
 DEFINE_GUID (IID_IDockingWindowFrame,	0x47D2657AL, 0x7B27, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
 
@@ -39,5 +43,8 @@ ICOM_DEFINE(IDockingWindowFrame,IOleWindow)
 #define IDockingWindowFrame_FindToolbar(p,a,b,c)	ICOM_CALL3(FindToolbar,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_IDOCKINGWINDOWFRAME_H */
diff --git a/include/wine/obj_dragdrop.h b/include/wine/obj_dragdrop.h
index 1bab0f90fab..6713622e98e 100644
--- a/include/wine/obj_dragdrop.h
+++ b/include/wine/obj_dragdrop.h
@@ -10,6 +10,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_dataobject.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -82,6 +86,10 @@ ICOM_DEFINE(IDropTarget,IUnknown)
 #define IDropTarget_Drop(p,a,b,c,d)       ICOM_CALL4(Drop,p,a,b,c,d)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /*  __WINE_WINE_OBJ_DRAGDROP_H */
 
 
diff --git a/include/wine/obj_enumidlist.h b/include/wine/obj_enumidlist.h
index 0f4411504d2..337ab44bf25 100644
--- a/include/wine/obj_enumidlist.h
+++ b/include/wine/obj_enumidlist.h
@@ -11,6 +11,10 @@
 #include "shell.h"
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -47,4 +51,8 @@ ICOM_DEFINE(IEnumIDList,IUnknown)
 #define IEnumIDList_DeleteList(p)		ICOM_CALL(DeleteList,p)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINE_OBJ_ENUMIDLIST_H */
diff --git a/include/wine/obj_extracticon.h b/include/wine/obj_extracticon.h
index 3d02f946be8..25a4f8a9317 100644
--- a/include/wine/obj_extracticon.h
+++ b/include/wine/obj_extracticon.h
@@ -9,6 +9,10 @@
 #include "winuser.h"
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 DEFINE_SHLGUID(IID_IExtractIconA,	0x000214EBL, 0, 0);
 DEFINE_SHLGUID(IID_IExtractIconW,	0x000214FAL, 0, 0);
 typedef struct IExtractIconA IExtractIconA,*LPEXTRACTICONA;
@@ -46,4 +50,8 @@ ICOM_DEFINE(IExtractIconA,IUnknown)
 
 #define IExtractIcon        IExtractIconA 
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINE_OBJ_IEXTRACTICONA_H */
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
index bd90d9cc21c..2e648a9bd0e 100644
--- a/include/wine/obj_inplace.h
+++ b/include/wine/obj_inplace.h
@@ -12,6 +12,10 @@
 #include "winuser.h"
 #include "wine/obj_moniker.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the structures
  */
@@ -490,6 +494,9 @@ ICOM_DEFINE(IOleLink,IUnknown)
 #define IOleLink_Update(p,a)                 ICOM_CALL1(Update,p,a)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_INPLACE_H */
 
diff --git a/include/wine/obj_marshal.h b/include/wine/obj_marshal.h
index ada5821dd7b..ae8cb46fa1f 100644
--- a/include/wine/obj_marshal.h
+++ b/include/wine/obj_marshal.h
@@ -9,6 +9,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -107,5 +111,8 @@ HRESULT WINAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT* phresult);
 /* FIXME: not implemented */
 HRESULT WINAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID* ppv);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_MARSHAL_H */
diff --git a/include/wine/obj_misc.h b/include/wine/obj_misc.h
index 6bd722a400b..a478308706d 100644
--- a/include/wine/obj_misc.h
+++ b/include/wine/obj_misc.h
@@ -10,6 +10,10 @@
 
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -184,5 +188,8 @@ HRESULT WINAPI CoCreateInstanceEx(REFCLSID      rclsid,
 				  COSERVERINFO* pServerInfo,
 				  ULONG         cmq,
 				  MULTI_QI*     pResults);
+#ifdef __cplusplus
+} /*  extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_MISC_H */
diff --git a/include/wine/obj_moniker.h b/include/wine/obj_moniker.h
index f3fd58d1d3f..f90c7435d84 100644
--- a/include/wine/obj_moniker.h
+++ b/include/wine/obj_moniker.h
@@ -8,6 +8,10 @@
 #include "wine/obj_storage.h"
 #include "wine/obj_misc.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -353,5 +357,8 @@ HRESULT WINAPI CoGetInstanceFromFile(COSERVERINFO* pServerInfo, CLSID* pClsid, I
 /* FIXME: not implemented */
 HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO* pServerInfo, CLSID* pClsid, IUnknown* punkOuter, DWORD dwClsCtx, IStorage* pstg, DWORD dwCount, MULTI_QI* pResults);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_MONIKER_H */
diff --git a/include/wine/obj_olefont.h b/include/wine/obj_olefont.h
index c9a54999b8f..ae0ad0ffa36 100644
--- a/include/wine/obj_olefont.h
+++ b/include/wine/obj_olefont.h
@@ -10,6 +10,10 @@
 #include "wine/obj_base.h"
 #include "wingdi.h"	/* TEXTMETRIC*/
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -112,6 +116,9 @@ ICOM_DEFINE(IFontDisp,IDispatch)
 /*** IFontDisp methods ***/
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_OLEFONT_H */
 
diff --git a/include/wine/obj_oleobj.h b/include/wine/obj_oleobj.h
index 0ef0f99876a..a8dd00b377d 100644
--- a/include/wine/obj_oleobj.h
+++ b/include/wine/obj_oleobj.h
@@ -12,6 +12,10 @@
 #include "winuser.h"
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Declare the structures
  */
@@ -191,6 +195,10 @@ ICOM_DEFINE(IEnumOLEVERB,IUnknown)
 #define IEnumOLEVERB_Reset(p,a)             ICOM_CALL (Reset,p)
 #define IEnumOLEVERB_Clone(p,a)             ICOM_CALL1(Clone,p,a)
 #endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 				  
 #endif /* __WINE_WINE_OBJ_OLEOBJ_H */
 
diff --git a/include/wine/obj_oleundo.h b/include/wine/obj_oleundo.h
index 03822036a6e..0fbe5f0df19 100644
--- a/include/wine/obj_oleundo.h
+++ b/include/wine/obj_oleundo.h
@@ -10,6 +10,10 @@
 
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -294,7 +298,9 @@ ICOM_DEFINE(IEnumOleUndoUnits,IUnknown)
 #define IEnumOleUndoUnits_Clone(p,a)            ICOM_CALL1(Clone,p,a)
 #endif
 
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_OLEUNDO_H */
 
diff --git a/include/wine/obj_oleview.h b/include/wine/obj_oleview.h
index 3d213d4804e..9bff7722f6d 100644
--- a/include/wine/obj_oleview.h
+++ b/include/wine/obj_oleview.h
@@ -10,6 +10,9 @@
 
 #include "winbase.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
 
 /*****************************************************************************
  * Declare the structures
@@ -89,7 +92,9 @@ ICOM_DEFINE(IViewObject2,IViewObject)
 #define IViewObject2_GetExtent(p,a,b,c,d)         ICOM_CALL4(GetExtent,p,a,b,c,d)
 #endif
 
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_OLEVIEW_H */
 
diff --git a/include/wine/obj_picture.h b/include/wine/obj_picture.h
index 5a03a4e57fc..aec304c5a88 100644
--- a/include/wine/obj_picture.h
+++ b/include/wine/obj_picture.h
@@ -10,6 +10,10 @@
 #include "windows.h"
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the structures
  */
@@ -102,7 +106,9 @@ ICOM_DEFINE(IPictureDisp,IDispatch)
 /*** IPictureDisp methods ***/
 #endif
 
-
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_PICTURE_H */
 
diff --git a/include/wine/obj_property.h b/include/wine/obj_property.h
index 97c2dc83788..a3a5c513809 100644
--- a/include/wine/obj_property.h
+++ b/include/wine/obj_property.h
@@ -11,6 +11,10 @@
 #include "winbase.h"
 #include "wine/obj_oleaut.h" /* for DISPID */
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Declare the structures
  */
@@ -429,6 +433,9 @@ ICOM_DEFINE(IPerPropertyBrowsing,IUnknown)
 #define IPerPropertyBrowsing_GetPredefinedValue(p,a,b,c)   ICOM_CALL3(GetPredefinedValue,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_PROPERTY_H */
 
diff --git a/include/wine/obj_propertystorage.h b/include/wine/obj_propertystorage.h
index e4c910d50fa..2ede7ad8990 100644
--- a/include/wine/obj_propertystorage.h
+++ b/include/wine/obj_propertystorage.h
@@ -8,6 +8,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -431,5 +435,8 @@ ICOM_DEFINE(IPropertyStorage,IUnknown)
 #define IPropertyStorage_Stat(p,a)                   ICOM_CALL1(Stat,p,a)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_PROPERTYSTORAGE_H */
diff --git a/include/wine/obj_shellbrowser.h b/include/wine/obj_shellbrowser.h
index 961fecff645..7bd67f2dc0d 100644
--- a/include/wine/obj_shellbrowser.h
+++ b/include/wine/obj_shellbrowser.h
@@ -12,6 +12,10 @@
 #include "wine/obj_shellview.h"	/* IShellView */
 #include "commctrl.h" 		/* TBBUTTON */
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /* it's ok commented out, see obj_shellview.h
    typedef struct IShellBrowser IShellBrowser, *LPSHELLBROWSER;
 */
@@ -102,5 +106,8 @@ ICOM_DEFINE(IShellBrowser,IOleWindow)
 #define IShellBrowser_SetToolbarItems(p,a,b,c)		ICOM_CALL3(SetToolbarItems,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_ISHELLBROWSER_H */
diff --git a/include/wine/obj_shellextinit.h b/include/wine/obj_shellextinit.h
index 70437772590..0cf1bd363e0 100644
--- a/include/wine/obj_shellextinit.h
+++ b/include/wine/obj_shellextinit.h
@@ -10,6 +10,10 @@
 #include "wine/obj_base.h"
 #include "wine/obj_dataobject.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 typedef struct 	IShellExtInit IShellExtInit, *LPSHELLEXTINIT;
 DEFINE_SHLGUID(IID_IShellExtInit,       0x000214E8L, 0, 0);
 
@@ -29,5 +33,8 @@ ICOM_DEFINE(IShellExtInit,IUnknown)
 #define IShellExtInit_Initialize(p,a,b,c)	ICOM_CALL3(Initialize,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_ISHELLEXTINIT_H */
diff --git a/include/wine/obj_shellfolder.h b/include/wine/obj_shellfolder.h
index 02dafacca85..0568e0b44a4 100644
--- a/include/wine/obj_shellfolder.h
+++ b/include/wine/obj_shellfolder.h
@@ -13,6 +13,10 @@
 #include "winbase.h"
 #include "shell.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /****************************************************************************
 *  STRRET (temporary, move it away)
 */
@@ -198,5 +202,8 @@ ICOM_DEFINE(IPersistFolder, IPersist)
 #define IPersistFolder_Initialize(p,a)		ICOM_CALL1(Initialize,p,a)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_SHELLLINK_H */
diff --git a/include/wine/obj_shelllink.h b/include/wine/obj_shelllink.h
index 144e1ddcda2..f15a5f7d836 100644
--- a/include/wine/obj_shelllink.h
+++ b/include/wine/obj_shelllink.h
@@ -11,6 +11,10 @@
 #include "winbase.h"
 #include "shell.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the interfaces
  */
@@ -147,4 +151,8 @@ ICOM_DEFINE(IShellLinkW,IUnknown)
 #define IShellLinkW_SetPath(p,a)			ICOM_CALL1(SetPath,p,a)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINE_OBJ_SHELLLINK_H */
diff --git a/include/wine/obj_shellview.h b/include/wine/obj_shellview.h
index 938eabfdba3..18fdb8687b5 100644
--- a/include/wine/obj_shellview.h
+++ b/include/wine/obj_shellview.h
@@ -12,6 +12,10 @@
 #include "wine/obj_shellfolder.h"
 #include "prsht.h"	/* LPFNADDPROPSHEETPAGE */
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /****************************************************************************
  * IShellBrowser is here defined because of a cyclic dependance between 
  * IShellBrowser and IShellView
@@ -139,5 +143,8 @@ ICOM_DEFINE(IShellView,IOleWindow)
 #define IShellView_GetItemObject(p,a,b,c)	ICOM_CALL3(GetItemObject,p,a,b,c)
 #endif
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_ISHELLVIEW_H */
diff --git a/include/wine/obj_storage.h b/include/wine/obj_storage.h
index bfa2cc588dd..729a25b7004 100644
--- a/include/wine/obj_storage.h
+++ b/include/wine/obj_storage.h
@@ -9,6 +9,10 @@
 #include "winnt.h"
 #include "wine/obj_base.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*****************************************************************************
  * Predeclare the structures
  */
@@ -711,5 +715,8 @@ BOOL WINAPI CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME* lpFi
 /* FIXME: not implemented */
 BOOL WINAPI CoFileTimeToDosDateTime(FILETIME* lpFileTime, WORD* lpDosDate, WORD* lpDosTime);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
 
 #endif /* __WINE_WINE_OBJ_STORAGE_H */
diff --git a/include/winreg.h b/include/winreg.h
index c2ef8a9902c..b66fc3a2f23 100644
--- a/include/winreg.h
+++ b/include/winreg.h
@@ -7,6 +7,10 @@
 #include "winbase.h"
 #include "winnt.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /*
 #define SHELL_ERROR_SUCCESS           0L
 #define SHELL_ERROR_BADDB             1L
@@ -216,4 +220,8 @@ DWORD       WINAPI RegSetValueExA(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD);
 DWORD       WINAPI RegSetValueExW(HKEY,LPWSTR,DWORD,DWORD,LPBYTE,DWORD);
 #define     RegSetValueEx WINELIB_NAME_AW(RegSetValueEx)
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* __WINE_WINREG_H */
diff --git a/include/winsock.h b/include/winsock.h
index c063b4a37e7..d5cc614e6bc 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -29,6 +29,10 @@
 #include "windef.h"
 #include "task.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 #include "pshpack1.h"
 
 /* Win16 socket-related types */
@@ -588,5 +592,9 @@ UINT16 wsaHerrno(void);
 
 extern INT WINSOCK_DeleteTaskWSI( TDB* pTask, struct _WSINFO* );
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif  /* _WINSOCKAPI_ */
 
diff --git a/include/winver.h b/include/winver.h
index 54e2a9f6ec4..0a3c020cca4 100644
--- a/include/winver.h
+++ b/include/winver.h
@@ -8,6 +8,10 @@
 
 #include "windef.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 /* resource ids for different version infos */
 /* These are internal resources for win16, but simple numbers in win32 */
 /* All win32 defines should be moved to winver.h */
@@ -177,4 +181,8 @@ DWORD WINAPI GetFileResource( LPCSTR lpszFileName,
 
 #endif /* RC_INVOKED */
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINVER_H */