Added extern "C" if __cplusplus is defined.

diff --git a/include/ddeml.h b/include/ddeml.h
index 284c636..ec147ed 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 @@
 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 fbf5582..03ef896 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 @@
 #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 9445d70..54d359b 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 @@
 #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 8339a65..41944b7 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 @@
 #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 542488f..7aff020 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 @@
  */
 /* 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 91c3739..4ef83fa 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 @@
 
 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 3fbb284..d9b8de6 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 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 431845c..9b24586 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_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 14629b7..af0851e 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 @@
 					   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 570077f..2621b28 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 @@
 #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 4291a47..90e9352 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 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 4ff1a7d..880fc74 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 @@
 
 /**********************************************************************/
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_SHLOBJ_H */
diff --git a/include/tapi.h b/include/tapi.h
index a7fe1db..4a80afa 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 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 8e33d07..665fc1f 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 @@
 #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 b153950..7216488 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 @@
 #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 807cbec..be7a396 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 @@
 /* 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 4e2a264..5d52321 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 @@
 #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 733a18a..ed1ccbf 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 @@
 #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 3903b43..e8dccc4 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 @@
 #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 38e2bf2..757eaa6 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 @@
 #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 5573f11..d103ff5 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 @@
 #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 1bab0f9..6713622 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 @@
 #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 0f44115..337ab44 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 @@
 #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 3d02f94..25a4f8a 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 @@
 
 #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 bd90d9c..2e648a9 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 @@
 #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 ada5821..ae8cb46 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 @@
 /* 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 6bd722a..a478308 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 @@
 				  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 f3fd58d..f90c743 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 @@
 /* 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 c9a5499..ae0ad0f 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 @@
 /*** 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 0ef0f99..a8dd00b 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 @@
 #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 0382203..0fbe5f0 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 @@
 #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 3d213d4..9bff772 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 @@
 #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 5a03a4e..aec304c 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 @@
 /*** 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 97c2dc8..a3a5c51 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 @@
 #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 e4c910d..2ede7ad 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 @@
 #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 961fecf..7bd67f2 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 @@
 #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 7043777..0cf1bd3 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 @@
 #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 02dafac..0568e0b 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 @@
 #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 144e1dd..f15a5f7 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 @@
 #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 938eabf..18fdb86 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 @@
 #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 bfa2cc5..729a25b 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 @@
 /* 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 c2ef8a9..b66fc3a 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 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 c063b4a..d5cc614 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 @@
 
 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 54e2a9f..0a3c020 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 @@
 
 #endif /* RC_INVOKED */
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
 #endif /* __WINE_WINVER_H */