diff -urN so3.orig/inc/applet.hxx so3/inc/applet.hxx
--- so3.orig/inc/applet.hxx	2005-09-07 23:30:38.000000000 +0200
+++ so3/inc/applet.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -44,12 +44,15 @@
 #include <ipobj.hxx>
 #include <svtools/ownlist.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
 //=========================================================================
 struct SvAppletData_Impl;
 class INetURLObject;
 class SjApplet;
 class RmAppletObject;
-class SvAppletObject : public SvInPlaceObject
+class SO3_DLLPUBLIC SvAppletObject : public SvInPlaceObject
 /*	[Beschreibung]
 
 	Die Klasse AppletObject ist die Abbildung eines InPlace-Objektes
@@ -62,38 +65,41 @@
 */
 {
 friend class SvAppletEnvironment;
+
+private:
 	SvAppletData_Impl *	pImpl;
 
-	void			DataChanged_Impl( BOOL bOnlyEmbedSource );
+	SO3_DLLPRIVATE void			DataChanged_Impl( BOOL bOnlyEmbedSource );
+
 protected:
-	BOOL			StartApplet();
-	virtual void    FillClass( SvGlobalName * pClassName,
+	SO3_DLLPRIVATE BOOL			StartApplet();
+	SO3_DLLPRIVATE virtual void    FillClass( SvGlobalName * pClassName,
 							   ULONG * pFormat,
 							   String * pAppName,
 							   String * pFullTypeName,
 							   String * pShortTypeName,
                                long nFileFormat = SOFFICE_FILEFORMAT_CURRENT ) const;
 					// Protokoll
-	virtual void    Open( BOOL bOpen );
-	virtual void    InPlaceActivate( BOOL );
-	virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
+	SO3_DLLPRIVATE virtual void    Open( BOOL bOpen );
+	SO3_DLLPRIVATE virtual void    InPlaceActivate( BOOL );
+	SO3_DLLPRIVATE virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
 						Window * pWin, const Rectangle * pWorkRectPixel );
 
 					// Datenaustausch
-	virtual void    SetVisArea( const Rectangle & rVisArea );
-	virtual void    Draw( OutputDevice *,
+	SO3_DLLPRIVATE virtual void    SetVisArea( const Rectangle & rVisArea );
+	SO3_DLLPRIVATE virtual void    Draw( OutputDevice *,
 						  const JobSetup & rSetup,
 						  USHORT nAspect = ASPECT_CONTENT );
 
 					// Laden speichern
-	virtual BOOL    InitNew( SvStorage * );
-	virtual BOOL    Load( SvStorage * );
-	virtual BOOL    Save();
-	virtual BOOL    SaveAs( SvStorage * );
-	virtual void    HandsOff();
-	virtual BOOL    SaveCompleted( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    InitNew( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Load( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Save();
+	SO3_DLLPRIVATE virtual BOOL    SaveAs( SvStorage * );
+	SO3_DLLPRIVATE virtual void    HandsOff();
+	SO3_DLLPRIVATE virtual BOOL    SaveCompleted( SvStorage * );
 
-					~SvAppletObject();
+	SO3_DLLPRIVATE 				~SvAppletObject();
 public:
 					SO2_DECL_BASIC_CLASS_DLL(SvAppletObject,SOAPP)
 					SvAppletObject();
diff -urN so3.orig/inc/client.hxx so3/inc/client.hxx
--- so3.orig/inc/client.hxx	2005-09-07 23:31:24.000000000 +0200
+++ so3/inc/client.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -41,6 +41,9 @@
 #include <tools/gen.hxx>
 #include <tools/fract.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
 
 /*************************************************************************
 *************************************************************************/
@@ -60,9 +63,10 @@
 SO2_DECL_REF(SvEmbeddedObject);
 #endif
 
-class SvClientData
+class SO3_DLLPUBLIC SvClientData
 {
 friend class SvEmbeddedClient;
+private:
 	SvEmbeddedClient * pClient;
 	Rectangle		aObjRect;	// Groesse des Objektes in logischen
 								// Koordinaten
@@ -72,7 +76,7 @@
 	BOOL			bInvalidate;// nur wenn Window Initial uebergeben wird
 
 protected:
-	void			SetEditWin( Window * pWin ) { pEditWin = pWin; }
+	SO3_DLLPRIVATE void			SetEditWin( Window * pWin ) { pEditWin = pWin; }
 public:
 					TYPEINFO();
 					SvClientData( SvEmbeddedClient *, Window * pWin = NULL );
@@ -104,8 +108,9 @@
 					}
 };
 
-class SvAreaConstrain
+class SO3_DLLPUBLIC SvAreaConstrain
 {
+private:
 	Size	aMaxSize; //maximale Groesse des Gebietes
 	Size	aMinSize; //minimale Groesse des Gebietes
 	Size	aStepSize;//Schrittweite der Veraenderung
@@ -129,7 +134,7 @@
 							Fraction * pHeightScale = NULL /*OutParam*/ ) const;
 };
 
-class SvEmbeddedClient : public SvObject
+class SO3_DLLPUBLIC SvEmbeddedClient : public SvObject
 {
 friend class ImpClientSite;
 friend class ImpAdviseSink;
@@ -138,6 +143,7 @@
 friend class SvEditObjectProtocol;
 friend class ImplSvEditObjectProtocol;
 
+private:
 	SvClientData *  	pData;		// Wird auch in SvInPlaceClient modifiziert
 	SvEmbeddedClient *	pParent;
 	USHORT          	nAspect;
@@ -145,20 +151,20 @@
 						bDeleteData:1,
 						bCanPlugIn;
 
-	void            SetStandardAdvises( SvEmbeddedObject * );
+	SO3_DLLPRIVATE void            SetStandardAdvises( SvEmbeddedObject * );
 protected:
 	SvEditObjectProtocol aProt;
-					~SvEmbeddedClient();
+	 				~SvEmbeddedClient();
 
-	void			SetViewData( SvClientData * pD )
+	SO3_DLLPRIVATE void			SetViewData( SvClientData * pD )
 					{
 						pData = pD;
 					}
-	BOOL			HasViewData() const { return pData != NULL; }
+	SO3_DLLPRIVATE BOOL			HasViewData() const { return pData != NULL; }
 	virtual void	MakeViewData();
 	virtual void	FreeViewData( SvClientData * );
 
-	void			SetCanPlugIn( BOOL b )
+	SO3_DLLPRIVATE void			SetCanPlugIn( BOOL b )
 					{ bCanPlugIn = b; }
 
 					// Benachrichtigungen
diff -urN so3.orig/inc/embobj.hxx so3/inc/embobj.hxx
--- so3.orig/inc/embobj.hxx	2005-09-07 23:32:06.000000000 +0200
+++ so3/inc/embobj.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -47,6 +47,10 @@
 #include <svtools/ownlist.hxx>
 
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class Printer;
 
 
@@ -74,7 +78,7 @@
 class SvStorage;
 namespace com { namespace sun { namespace star { namespace datatransfer { class XTransferable; } } } }
 
-class SvEmbeddedObject : virtual public SvPersist,
+class SO3_DLLPUBLIC SvEmbeddedObject : virtual public SvPersist,
 						 public SvPseudoObject
 {
 friend class ImpOleObject;
@@ -228,7 +232,7 @@
 
 /*************************************************************************
 *************************************************************************/
-class SvEmbeddedInfoObject : public SvInfoObject
+class SO3_DLLPUBLIC SvEmbeddedInfoObject : public SvInfoObject
 {
 	Rectangle       aVisArea;
 	UINT32			nViewAspect;
diff -urN so3.orig/inc/factory.hxx so3/inc/factory.hxx
--- so3.orig/inc/factory.hxx	2005-09-07 23:32:34.000000000 +0200
+++ so3/inc/factory.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -53,6 +53,10 @@
 #include <com/sun/star/datatransfer/XTransferable.hpp>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class SvObject;
@@ -62,7 +66,7 @@
 typedef SvGlobalName SvUniqueName;
 
 //==================class SvFactory========================================
-class SvFactory : public SotFactory
+class SO3_DLLPUBLIC SvFactory : public SotFactory
 /*	[Beschreibung]
 
 	Die Methoden der Klasse kann man in zwei Gruppen aufteilen.
@@ -79,7 +83,7 @@
 	SvFactory_Impl *	pImp;
 	ULONG               nRegisterId;
 
-	void                Revoke();
+	SO3_DLLPRIVATE void                Revoke();
 protected:
 	virtual             ~SvFactory();
 public:
diff -urN so3.orig/inc/iface.hxx so3/inc/iface.hxx
--- so3.orig/inc/iface.hxx	2005-09-07 23:33:34.000000000 +0200
+++ so3/inc/iface.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -50,6 +50,11 @@
 
 #include <sot/object.hxx>
 
+
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 struct IUnknown;
@@ -226,13 +231,15 @@
 #pragma warning(disable: 4250)
 #endif
 
-class SvObject : virtual public SotObject
+class SO3_DLLPUBLIC SvObject : virtual public SotObject
 {
 friend struct IUnknown;
 friend class SvSoIPCService;
 friend class SvSoIPCClient;
 friend class SvFactory;
-	union
+
+private:
+	SO3_DLLPRIVATE union
 	{
 		IUnknown *      pObj;       // IUnknown Interface
 		SvSoIPCClient * pClient;    // Client, falls !Owner()
@@ -246,9 +253,9 @@
 protected:
 #endif
 	virtual             ~SvObject();
-	void                DeInit( IUnknown * );
-	void                DeInit( SvSoIPCService * );
-	void                DeInit( SvSoIPCClient * );
+	SO3_DLLPRIVATE void                DeInit( IUnknown * );
+	SO3_DLLPRIVATE void                DeInit( SvSoIPCService * );
+	SO3_DLLPRIVATE void                DeInit( SvSoIPCClient * );
 	virtual void        MakeUnknown();
 public:
 						SvObject();
@@ -270,14 +277,14 @@
 	virtual USHORT      FuzzyLock( BOOL bLock, BOOL bIntern, BOOL bClose );
 private:
 	// Kopieren und Zuweisen dieses Objekttyps ist nicht erlaubt
-	SvObject & operator = ( const SvObject & );
-	SvObject( const SvObject & );
+	SO3_DLLPRIVATE SvObject & operator = ( const SvObject & );
+	SO3_DLLPRIVATE SvObject( const SvObject & );
 };
 
 //==================class SvObjectRef======================================
 #ifndef SO2_DECL_SVOBJECT_DEFINED
 #define SO2_DECL_SVOBJECT_DEFINED
-class SvObjectRef
+class SO3_DLLPUBLIC SvObjectRef
 {
 	PRV_SV_DECL_REF(SvObject)
 };
@@ -293,23 +300,24 @@
 //==================class SvFactory_Impl===================================
 #if !defined( SO_EXTERN )
 struct IClassFactory;
-class SvFactory_Impl : public SvObject
+class SO3_DLLPRIVATE SvFactory_Impl : public SvObject
 /*  [Beschreibung]
 
 */
 {
 friend class ImpFactory;
 friend class SvFactory;
+private:
 	IClassFactory * pObjI;
 	SvFactory *     pFact;
 public:
-					SvFactory_Impl();
-					SvFactory_Impl( SvFactory * );
-					~SvFactory_Impl();
+	SO3_DLLPRIVATE			SvFactory_Impl();
+	SO3_DLLPRIVATE			SvFactory_Impl( SvFactory * );
+	SO3_DLLPRIVATE			~SvFactory_Impl();
 
 	SO2_DECL_STANDARD_CLASS_DLL( SvFactory_Impl, SOAPP )
 
-	IClassFactory * GetClassFactory() const;
+	SO3_DLLPRIVATE IClassFactory * GetClassFactory() const;
 };
 #endif
 
@@ -326,25 +334,26 @@
 Rectangle GetSvRect( const Rect & rRect );
 #endif
 
-class SvBorder
+class SO3_DLLPRIVATE SvBorder
 {
+private:
 	long nTop, nRight, nBottom, nLeft;
 public:
-	SvBorder()
+	SO3_DLLPRIVATE SvBorder()
 	{ nTop = nRight = nBottom = nLeft = 0; }
-	SvBorder( const Size & rSz )
+	SO3_DLLPRIVATE SvBorder( const Size & rSz )
 	{ nTop = nBottom = rSz.Height(); nRight = nLeft = rSz.Width(); }
-	SvBorder( const Rectangle & rOuter, const Rectangle & rInner );
-	SvBorder( long nLeftP, long nTopP, long nRightP, long nBottomP )
+	SO3_DLLPRIVATE SvBorder( const Rectangle & rOuter, const Rectangle & rInner );
+	SO3_DLLPRIVATE SvBorder( long nLeftP, long nTopP, long nRightP, long nBottomP )
 	{ nLeft = nLeftP; nTop = nTopP; nRight = nRightP; nBottom = nBottomP; }
-	BOOL    operator == ( const SvBorder & rObj ) const
+	SO3_DLLPRIVATE BOOL    operator == ( const SvBorder & rObj ) const
 			{
 				return nTop == rObj.nTop && nRight == rObj.nRight &&
 					   nBottom == rObj.nBottom && nLeft == rObj.nLeft;
 			}
-	BOOL    operator != ( const SvBorder & rObj ) const
+	SO3_DLLPRIVATE BOOL    operator != ( const SvBorder & rObj ) const
 			{ return !(*this == rObj); }
-	SvBorder & operator += ( const SvBorder & rBorder )
+	SO3_DLLPRIVATE SvBorder & operator += ( const SvBorder & rBorder )
 			{
 				Left()   += rBorder.Left();
 				Top()    += rBorder.Top();
@@ -352,7 +361,7 @@
 				Bottom() += rBorder.Bottom();
 				return *this;
 			}
-	SvBorder & operator -= ( const SvBorder & rBorder )
+	SO3_DLLPRIVATE SvBorder & operator -= ( const SvBorder & rBorder )
 			{
 				Left()   -= rBorder.Left();
 				Top()    -= rBorder.Top();
@@ -360,22 +369,22 @@
 				Bottom() -= rBorder.Bottom();
 				return *this;
 			}
-	BOOL    IsInside( const SvBorder & rInside )
+	SO3_DLLPRIVATE BOOL    IsInside( const SvBorder & rInside )
 			{
 				return nTop >= rInside.nTop && nRight >= rInside.nRight &&
 					   nBottom >= rInside.nBottom && nLeft >= rInside.nLeft;
 			}
-	long &  Top()    { return nTop; }
-	long &  Right()  { return nRight; }
-	long &  Bottom() { return nBottom; }
-	long &  Left()   { return nLeft; }
-	long    Top()    const { return nTop; }
-	long    Right()  const { return nRight; }
-	long    Bottom() const { return nBottom; }
-	long    Left()   const { return nLeft; }
+	SO3_DLLPRIVATE long &  Top()    { return nTop; }
+	SO3_DLLPRIVATE long &  Right()  { return nRight; }
+	SO3_DLLPRIVATE long &  Bottom() { return nBottom; }
+	SO3_DLLPRIVATE long &  Left()   { return nLeft; }
+	SO3_DLLPRIVATE long    Top()    const { return nTop; }
+	SO3_DLLPRIVATE long    Right()  const { return nRight; }
+	SO3_DLLPRIVATE long    Bottom() const { return nBottom; }
+	SO3_DLLPRIVATE long    Left()   const { return nLeft; }
 };
-Rectangle & operator += ( Rectangle & rRect, const SvBorder & rBorder );
-Rectangle & operator -= ( Rectangle & rRect, const SvBorder & rBorder );
+SO3_DLLPRIVATE Rectangle & operator += ( Rectangle & rRect, const SvBorder & rBorder );
+SO3_DLLPRIVATE Rectangle & operator -= ( Rectangle & rRect, const SvBorder & rBorder );
 
 #ifdef DBG_UTIL
 ByteString  SvPrint( const SvBorder & );
diff -urN so3.orig/inc/insdlg.hxx so3/inc/insdlg.hxx
--- so3.orig/inc/insdlg.hxx	2005-09-07 23:34:09.000000000 +0200
+++ so3/inc/insdlg.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -45,6 +45,10 @@
 #include <so2ref.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class SvAppletObject;
 
 #ifndef SO2_DECL_SVINPLACEOBJECT_DEFINED
@@ -58,7 +62,7 @@
 
 /********************** SvObjectServer ***********************************
 *************************************************************************/
-class SvObjectServer
+class SO3_DLLPUBLIC SvObjectServer
 {
 private:
 	SvGlobalName    aClassName;
@@ -73,14 +77,14 @@
 	const String &          GetHumanName() const { return aHumanName; }
 };
 
-class SvObjectServerList
+class SO3_DLLPRIVATE SvObjectServerList
 {
 	PRV_SV_DECL_OWNER_LIST(SvObjectServerList,SvObjectServer)
-	const SvObjectServer *  Get( const String & rHumanName ) const;
-	const SvObjectServer *  Get( const SvGlobalName & ) const;
-	void                    Remove( const SvGlobalName & );
+	SO3_DLLPRIVATE const SvObjectServer *  Get( const String & rHumanName ) const;
+	SO3_DLLPRIVATE const SvObjectServer *  Get( const SvGlobalName & ) const;
+	SO3_DLLPRIVATE void                    Remove( const SvGlobalName & );
 
-	void					FillInsertObjects();
+	SO3_DLLPRIVATE void					FillInsertObjects();
 };
 
 class SvStorage;
@@ -88,7 +92,7 @@
 
 // class SvDialog --------------------------------------------------------
 
-class SvDialog
+class SO3_DLLPUBLIC SvDialog
 
 /*	[Beschreibung]
 
@@ -109,7 +113,7 @@
 
 // class SvInsertOleObjectDialog -----------------------------------------
 
-class SvInsertOleObjectDialog : public SvDialog
+class SO3_DLLPUBLIC SvInsertOleObjectDialog : public SvDialog
 
 /*	[Beschreibung]
 
@@ -137,7 +141,7 @@
 
 // class SvInsertPlugInDialog --------------------------------------------
 
-class SvInsertPlugInDialog : public SvDialog
+class SO3_DLLPUBLIC SvInsertPlugInDialog : public SvDialog
 
 /*	[Beschreibung]
 
@@ -164,7 +168,7 @@
 
 // class SvInsertAppletDialog --------------------------------------------
 
-class SvInsertAppletDialog : public SvDialog
+class SO3_DLLPUBLIC SvInsertAppletDialog : public SvDialog
 
 /*	[Beschreibung]
 
diff -urN so3.orig/inc/ipclient.hxx so3/inc/ipclient.hxx
--- so3.orig/inc/ipclient.hxx	2005-09-07 23:34:31.000000000 +0200
+++ so3/inc/ipclient.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -38,6 +38,10 @@
 
 #include <client.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class  SvInPlaceClient;
@@ -56,7 +60,7 @@
 class SvContainerEnvironment;
 
 //=========================================================================
-class SvInPlaceClient : public SvEmbeddedClient
+class SO3_DLLPUBLIC SvInPlaceClient : public SvEmbeddedClient
 {
 friend class ImpInPlaceSite;
 friend class ImpInPlaceFrame;
@@ -68,9 +72,9 @@
 
 	IOleInPlaceSite *       pObjI;
 
-	BOOL            	CanInPlaceActivate() const;
+    SO3_DLLPRIVATE 	BOOL            	CanInPlaceActivate() const;
 protected:
-						~SvInPlaceClient();
+     						~SvInPlaceClient();
 
 	virtual void    	Opened( BOOL bOpen );
 	virtual void    	InPlaceActivate( BOOL bActivate );
diff -urN so3.orig/inc/ipenv.hxx so3/inc/ipenv.hxx
--- so3.orig/inc/ipenv.hxx	2005-09-07 23:34:48.000000000 +0200
+++ so3/inc/ipenv.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -41,6 +41,10 @@
 #include <vcl/mapunit.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class  SvInPlaceClient;
@@ -61,15 +65,16 @@
 struct IOleInPlaceUIWindow;
 
 //=========================================================================
-class SvAppFrame : public SvObject
+class SO3_DLLPUBLIC SvAppFrame : public SvObject
 {
 friend class ImpInPlaceFrame;
 friend class SvContainerEnvironment;
 friend class SvInPlaceClient;
+private:
 	IOleInPlaceFrame *      	pObjI;
 	SvContainerEnvironment *	pEnv;
 protected:
-						~SvAppFrame();
+	SO3_DLLPRIVATE 		~SvAppFrame();
 public:
 						SO2_DECL_INTERFACE()
 						SvAppFrame( SvContainerEnvironment * );
@@ -78,15 +83,16 @@
 SV_DECL_IMPL_REF(SvAppFrame)
 
 //=========================================================================
-class SvDocFrame : public SvObject
+class SO3_DLLPUBLIC SvDocFrame : public SvObject
 {
 friend class ImpInPlaceUIWindow;
 friend class SvContainerEnvironment;
 friend class SvInPlaceClient;
+private:
 	IOleInPlaceUIWindow *   	pObjI;
 	SvContainerEnvironment *	pEnv;
 protected:
-						~SvDocFrame();
+	SO3_DLLPRIVATE 		~SvDocFrame();
 public:
 						SO2_DECL_INTERFACE()
 						SvDocFrame( SvContainerEnvironment * );
@@ -98,7 +104,7 @@
 struct tagOIFI;
 typedef struct tagOIFI OLEINPLACEFRAMEINFO;
 
-class SvContainerEnvironment : public SvClientData
+class SO3_DLLPUBLIC SvContainerEnvironment : public SvClientData
 {
 friend class ImpInPlaceSite;
 friend class ImpInPlaceFrame;
@@ -107,6 +113,7 @@
 friend class SvInPlaceClient;
 friend class SvInPlaceObject;
 
+private:
 	SvInPlaceEnvironment *		pIPEnv; // IP-Env des Objektes
 	SvInPlaceClient *			pObj;	// kann auch NULL sein
 	SvContainerEnvironment *	pParent;// fuer IP in IP
@@ -135,26 +142,26 @@
 							bDeleteEditWin:1,
 							bDummy1;
 
-	void			SetIPEnv( SvInPlaceEnvironment * pEnv )
+	SO3_DLLPRIVATE void			SetIPEnv( SvInPlaceEnvironment * pEnv )
 					{ pIPEnv = pEnv; }
-	void			ResetIPEnv()
+	SO3_DLLPRIVATE void			ResetIPEnv()
 					{ pIPEnv = NULL; }
-	void			MakeWinContext_Impl();
+	SO3_DLLPRIVATE void			MakeWinContext_Impl();
 	//void			DeleteWindows_Impl();
 protected:
 	virtual void	ShowUIByChildDeactivate();
 
-	MenuBar *		DoQueryMenu( USHORT * p0, USHORT * p1, USHORT * p2 );
-	virtual MenuBar * QueryMenu( USHORT *, USHORT *, USHORT * );
-	virtual void    SetInPlaceMenu( MenuBar * pIPMenu, BOOL bSet );
-	void    		DoMenuReleased( MenuBar * pMenu );
-	virtual void    MenuReleased();
-	virtual void 	UIToolsShown( BOOL bShow );
-	void			RemoveDocWin() { pDocWin = NULL; }
-	void			RemoveEditWin() { SetEditWin( NULL ); }
-	BOOL			IsDefaultUIAction() const
+	SO3_DLLPRIVATE MenuBar *		DoQueryMenu( USHORT * p0, USHORT * p1, USHORT * p2 );
+	SO3_DLLPRIVATE virtual MenuBar * QueryMenu( USHORT *, USHORT *, USHORT * );
+	SO3_DLLPRIVATE virtual void    SetInPlaceMenu( MenuBar * pIPMenu, BOOL bSet );
+	SO3_DLLPRIVATE void    		DoMenuReleased( MenuBar * pMenu );
+	SO3_DLLPRIVATE virtual void    MenuReleased();
+	SO3_DLLPRIVATE virtual void 	UIToolsShown( BOOL bShow );
+	SO3_DLLPRIVATE void			RemoveDocWin() { pDocWin = NULL; }
+	SO3_DLLPRIVATE void			RemoveEditWin() { SetEditWin( NULL ); }
+	SO3_DLLPRIVATE BOOL			IsDefaultUIAction() const
 					{ return bDfltUIAction; }
-	const SvBorder& GetTopBorder() const
+	SO3_DLLPRIVATE const SvBorder& GetTopBorder() const
 					{ return aTopBorder; }
 
 public:
@@ -234,7 +241,7 @@
 
 
 /*************************************************************************/
-class SvInPlaceEnvironment
+class SO3_DLLPUBLIC SvInPlaceEnvironment
 {
 friend class SvInPlaceObject;
 friend class ImpInPlaceObject;
@@ -243,6 +250,7 @@
 friend class ImpOleInPlaceActiveObject;
 friend class ImplSvEditObjectProtocol;
 
+private:
 	USHORT                  nChangeRectsLockCount;
 	BOOL					bShowUITools:1,
 							bTopWinResize:1,
@@ -263,34 +271,34 @@
 	SvContainerEnvironment *pContEnv;
 	SvInPlaceObject *		pObj;
 
-	void 			MergeMenus();
-	void 			ReleaseClientMenu();
+	SO3_DLLPRIVATE void 			MergeMenus();
+	SO3_DLLPRIVATE void 			ReleaseClientMenu();
 protected:
-	virtual void	TopWinResize();
-	virtual void	DocWinResize();
+	SO3_DLLPRIVATE virtual void	TopWinResize();
+	SO3_DLLPRIVATE virtual void	DocWinResize();
 
-	virtual MenuBar * QueryMenu( USHORT * pCount0, USHORT * pCount1,
+	SO3_DLLPRIVATE virtual MenuBar * QueryMenu( USHORT * pCount0, USHORT * pCount1,
 								 USHORT * pCount2 );
-	virtual void	ShowIPObj( BOOL bShow );
-	virtual void	ShowUITools( BOOL bShow );
+	SO3_DLLPRIVATE virtual void	ShowIPObj( BOOL bShow );
+	SO3_DLLPRIVATE virtual void	ShowUITools( BOOL bShow );
 
-	virtual void 	RectsChangedPixel( const Rectangle & rObjRect,
+	SO3_DLLPRIVATE virtual void 	RectsChangedPixel( const Rectangle & rObjRect,
 										const Rectangle & rClip );
 
-	virtual 		BOOL DispatchAccel( const KeyCode & );
+	SO3_DLLPRIVATE virtual 		BOOL DispatchAccel( const KeyCode & );
 
-	void			SetObjMenu( SvInPlaceMenuBar * pMenu )
+	SO3_DLLPRIVATE void			SetObjMenu( SvInPlaceMenuBar * pMenu )
 					{ pObjMenu = pMenu; }
-	void			DeleteObjMenu();
+	SO3_DLLPRIVATE void			DeleteObjMenu();
 
-	void 			MakeWindows();
-	void			DeleteWindows();
-	void			SetClipWin( SvInPlaceClipWindow * pWin )
+	SO3_DLLPRIVATE void 			MakeWindows();
+	SO3_DLLPRIVATE void			DeleteWindows();
+	SO3_DLLPRIVATE void			SetClipWin( SvInPlaceClipWindow * pWin )
 					{ pClipWin = pWin; }
-	void			DeleteClipWin();
-	void			SetBorderWin( SvInPlaceWindow * pWin )
+	SO3_DLLPRIVATE void			DeleteClipWin();
+	SO3_DLLPRIVATE void			SetBorderWin( SvInPlaceWindow * pWin )
 					{ pBorderWin = pWin; }
-	void			DeleteBorderWin();
+	SO3_DLLPRIVATE void			DeleteBorderWin();
 
 public:
 					SvInPlaceEnvironment( SvContainerEnvironment *, SvInPlaceObject * );
@@ -350,13 +358,15 @@
 
 class SvPlugInObject;
 class SvPlugInEnvironment_Impl;
-class SvPlugInEnvironment : public SvInPlaceEnvironment
+class SO3_DLLPUBLIC SvPlugInEnvironment : public SvInPlaceEnvironment
 #ifdef SOLAR_JAVA
 , PlugJavaRequester
 #endif
 {
 friend class SvPlugInObject;
 
+private:
+
 	DECL_STATIC_LINK( SvPlugInEnvironment, MenuSelectHdl, Menu * );
 	BOOL        bIsStarPlugIn;
 	SvPlugInObject* pObj;
@@ -367,8 +377,8 @@
 #endif
 
 protected:
-	virtual void	DocWinResize();
-	virtual void 	RectsChangedPixel( const Rectangle & rObjRect,
+	SO3_DLLPRIVATE virtual void	DocWinResize();
+	SO3_DLLPRIVATE virtual void 	RectsChangedPixel( const Rectangle & rObjRect,
 									 const Rectangle & rClip );
 public:
 		SvPlugInEnvironment( SvContainerEnvironment *, SvPlugInObject * );
diff -urN so3.orig/inc/ipmenu.hxx so3/inc/ipmenu.hxx
--- so3.orig/inc/ipmenu.hxx	2005-09-07 23:35:05.000000000 +0200
+++ so3/inc/ipmenu.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -40,13 +40,18 @@
 #include <vcl/menu.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /********************** SvInPlaceMenuBar *********************************
 *************************************************************************/
-class SvInPlaceMenuBar : public MenuBar
+class SO3_DLLPUBLIC SvInPlaceMenuBar : public MenuBar
 {
+private:
 	USHORT nCount0, nCount1, nCount2;
 	using		Menu::InsertItem;
-	void        InsertItem( Menu & rFromMenu, USHORT nPos );
+	SO3_DLLPRIVATE void        InsertItem( Menu & rFromMenu, USHORT nPos );
 public:
 				SvInPlaceMenuBar( const ResId & rId );
 				SvInPlaceMenuBar( MenuBar * pBar,
diff -urN so3.orig/inc/ipobj.hxx so3/inc/ipobj.hxx
--- so3.orig/inc/ipobj.hxx	2005-09-07 23:35:20.000000000 +0200
+++ so3/inc/ipobj.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -39,6 +39,10 @@
 #include <embobj.hxx>
 #include <ipobj.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************/
 /*************************************************************************/
 class  ImpInPlaceObject;
@@ -66,7 +70,7 @@
 SO2_DECL_REF(SvInPlaceObject)
 #endif
 
-class SvInPlaceObject : public SvEmbeddedObject
+class SO3_DLLPUBLIC SvInPlaceObject : public SvEmbeddedObject
 {
 friend class ImpInPlaceObject;
 friend class ImpInPlaceSite;
@@ -76,20 +80,21 @@
 friend class ImplSvEditObjectProtocol;
 friend class SvInPlaceEnvironment;
 
+private:
 	IOleInPlaceObject *         pObjI;
 	IOleInPlaceActiveObject *   pActiveObj;
 	SvInPlaceEnvironment *      pIPEnv;
 	BOOL						bIsUndoable:1,
 								bDeleteIPEnv:1;
 
-	BOOL 						DoMergePalette();
+	SO3_DLLPRIVATE BOOL 						DoMergePalette();
 protected:
-					~SvInPlaceObject();
+	 				~SvInPlaceObject();
 
 	virtual void    TopWinActivate( BOOL bActivate );
 	virtual void    DocWinActivate( BOOL bActivate );
 
-	void			SetIPEnv( SvInPlaceEnvironment * pFrm );
+	SO3_DLLPRIVATE void			SetIPEnv( SvInPlaceEnvironment * pFrm );
 
 	virtual ErrCode Verb( long nVerbPos, SvEmbeddedClient * pCallerClient,
 						Window * pWin, const Rectangle * pWorkAreaPixel );
@@ -97,7 +102,7 @@
 	virtual void    InPlaceActivate( BOOL bActivate );
 	virtual void    UIActivate( BOOL bActivate );
 
-	void			SetUndoable( BOOL bUndoable )
+	SO3_DLLPRIVATE void			SetUndoable( BOOL bUndoable )
 					{ bIsUndoable = bUndoable; }
 	// View
 	virtual	BOOL 	MergePalette( const Palette & rContainerPal );
@@ -127,7 +132,7 @@
 SO2_IMPL_REF(SvInPlaceObject)
 
 //=========================================================================
-class SvDeathObject : public SvInPlaceObject
+class SO3_DLLPUBLIC SvDeathObject : public SvInPlaceObject
 /*	[Beschreibung]
 
 	Wenn das Laden eine Ole-Objektes fehlschl"agt, kann dieses Objekt
@@ -140,9 +145,9 @@
 */
 {
 protected:
-	virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
+	SO3_DLLPRIVATE virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
 						Window * pWin, const Rectangle * pWorkRectPixel );
-	virtual void    Draw( OutputDevice *,
+	SO3_DLLPRIVATE virtual void    Draw( OutputDevice *,
 						  const JobSetup & rSetup,
 						  USHORT nAspect = ASPECT_CONTENT );
 public:
diff -urN so3.orig/inc/ipwin.hxx so3/inc/ipwin.hxx
--- so3.orig/inc/ipwin.hxx	2005-09-07 23:35:39.000000000 +0200
+++ so3/inc/ipwin.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,10 +46,15 @@
 #include <so2ref.hxx>
 #include <iface.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /********************** SvResizeHelper ***********************************
 *************************************************************************/
-class SvResizeHelper
+class SO3_DLLPUBLIC SvResizeHelper
 {
+private:
 	Size        aBorder;
 	Rectangle   aOuter;
 	short       nGrab; // -1 kein Grab,  0 - 7, 8 = Move, siehe FillHandle...
@@ -93,8 +98,9 @@
 
 /********************** SvResizeWindow ***********************************
 *************************************************************************/
-class SvResizeWindow : public Window
+class SO3_DLLPUBLIC SvResizeWindow : public Window
 {
+private:
 	Pointer         aOldPointer;
 	short           nMoveGrab;  // Letzer Pointertyp
 	SvBorder        aBorder;
@@ -102,7 +108,7 @@
 	Window *        pObjWin;
 protected:
 	SvResizeHelper  aResizer;
-	void            AdjustObjWin();
+	SO3_DLLPRIVATE void            AdjustObjWin();
 public:
 			SvResizeWindow( Window * pParent );
 
@@ -155,8 +161,9 @@
 /********************** SvInPlaceWindow **********************************
 *************************************************************************/
 class SvInPlaceEnvironment;
-class SvInPlaceWindow : public SvResizeWindow
+class SO3_DLLPUBLIC SvInPlaceWindow : public SvResizeWindow
 {
+private:
 	SvInPlaceEnvironment *    pIPEnv;
 public:
 					SvInPlaceWindow( Window * pParent, SvInPlaceEnvironment * );
@@ -167,8 +174,9 @@
 
 /********************** SvInPlaceClipWindow ******************************
 *************************************************************************/
-class SvInPlaceClipWindow : public Window
+class SO3_DLLPUBLIC SvInPlaceClipWindow : public Window
 {
+private:
 	SvResizeWindow * pResizeWin;
 	Rectangle        aMaxClip;
 public:
diff -urN so3.orig/inc/linkdlg.hxx so3/inc/linkdlg.hxx
--- so3.orig/inc/linkdlg.hxx	2005-09-07 23:35:55.000000000 +0200
+++ so3/inc/linkdlg.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -43,6 +43,10 @@
 #include <vcl/lstbox.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class SvTabListBox;
 class Window;
 class RadioButton;
@@ -58,8 +62,9 @@
 class SvLinkManager;
 class SvBaseLink;
 
-class SvBaseLinksDialog
+class SO3_DLLPUBLIC SvBaseLinksDialog
 {
+private:
 	SvBaseLinksDlg* pDlg;
 	SvLinkManager*	pLinkMgr;
 	BOOL 			bHtmlMode;
diff -urN so3.orig/inc/linkmgr.hxx so3/inc/linkmgr.hxx
--- so3.orig/inc/linkmgr.hxx	2005-09-07 23:36:13.000000000 +0200
+++ so3/inc/linkmgr.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,6 +46,10 @@
 #include <svtools/svarray.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class SvPersist;
 
 namespace so3
@@ -59,11 +63,12 @@
 typedef SvLinkSource* SvLinkSourcePtr;
 SV_DECL_PTRARR( SvLinkSources, SvLinkSourcePtr, 1, 1 )
 
-class SvLinkManager
+class SO3_DLLPUBLIC SvLinkManager
 {
+private:
 	SvBaseLinks		aLinkTbl;
-	SvLinkSources aServerTbl;
-	SvPersist	*pPersist; // LinkMgr muss vor SvPersist freigegeben werden
+	SvLinkSources    aServerTbl;
+	SvPersist	    *pPersist; // LinkMgr muss vor SvPersist freigegeben werden
 protected:
 	BOOL 		InsertLink( SvBaseLink* pLink, USHORT nObjType, USHORT nUpdateType,
 							const String* pName = 0 );
@@ -116,8 +121,8 @@
 
 private:
 				// diese Methoden gibts nicht!
-				SvLinkManager( const SvLinkManager& );
-				SvLinkManager& operator=( const SvLinkManager& );
+	SO3_DLLPRIVATE 			SvLinkManager( const SvLinkManager& );
+	SO3_DLLPRIVATE 			SvLinkManager& operator=( const SvLinkManager& );
 };
 
 // Trenner im LinkName fuer die DDE-/File-/Grafik- Links
@@ -127,7 +127,7 @@
 // erzeuge einen String fuer den SvLinkName. Fuer
 // - DDE die ersten 3 Strings, (Server, Topic, Item)
 // - File-/Grf-LinkNms die letzen 3 Strings (FileName, Bereich, Filter)
-void MakeLnkName( String& rName,
+void SO3_DLLPUBLIC MakeLnkName( String& rName,
                                 const String* pType,           // kann auch 0 sein !!
                                 const String& rFile,
                                 const String& rLink,
diff -urN so3.orig/inc/linksrc.hxx so3/inc/linksrc.hxx
--- so3.orig/inc/linksrc.hxx	2005-09-07 23:36:27.000000000 +0200
+++ so3/inc/linksrc.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -47,6 +47,11 @@
 #define _SAL_CONFIG_H
 #endif
 
+
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 namespace com { namespace sun { namespace star { namespace uno
 {
 	class Any;
@@ -69,8 +74,9 @@
 class SvBaseLink;
 struct SvLinkSource_Impl;
 
-class SvLinkSource : public SvRefBase
+class SO3_DLLPUBLIC SvLinkSource : public SvRefBase
 {
+private:
 	SvLinkSource_Impl *	pImpl; // compatible area
 public:
 						TYPEINFO();
diff -urN so3.orig/inc/lnkbase.hxx so3/inc/lnkbase.hxx
--- so3.orig/inc/lnkbase.hxx	2005-09-07 23:36:43.000000000 +0200
+++ so3/inc/lnkbase.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -45,6 +45,10 @@
 #include <linksrc.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 namespace com { namespace sun { namespace star { namespace uno
 {
 	class Any;
@@ -79,11 +83,11 @@
 	LINKUPDATE_END		// dummy!
 };
 
-class SvBaseLink : public SvRefBase
+class SO3_DLLPUBLIC SvBaseLink : public SvRefBase
 {
 	friend class SvLinkManager;
 	friend class SvLinkSource;
-
+private:
 	SvLinkSourceRef			xObj;
 	String					aLinkName;
 	SvLinkManager* 			pLinkMgr;
@@ -96,20 +100,20 @@
 	void			SetObjType( USHORT );
 
 					// setzen des LinkSourceName ohne aktion
-	void			SetName( const String & rLn );
+	SO3_DLLPRIVATE void			SetName( const String & rLn );
 					// LinkSourceName der im SvLinkBase steht
-	String		 	GetName() const;
+	SO3_DLLPRIVATE String		 	GetName() const;
 
 
 	ImplBaseLinkData* pImplData;
 
-					SvBaseLink();
+	SO3_DLLPRIVATE 				SvBaseLink();
 					SvBaseLink( USHORT nLinkType, ULONG nContentType = FORMAT_STRING );
 	virtual 		~SvBaseLink();
 
 	void 			_GetRealObject( BOOL bConnect = TRUE );
 
-	SvLinkSource*	GetRealObject()
+	SO3_DLLPRIVATE SvLinkSource*	GetRealObject()
 					{
 						if( !xObj.Is() )
 							_GetRealObject();
diff -urN so3.orig/inc/outplace.hxx so3/inc/outplace.hxx
--- so3.orig/inc/outplace.hxx	2005-09-07 23:36:58.000000000 +0200
+++ so3/inc/outplace.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,11 +46,15 @@
 
 #include "ipobj.hxx"
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 //=========================================================================
 struct SvOutPlace_Impl;
 class SvObjectServer;
 
-class SvOutPlaceObject : public SvInPlaceObject
+class SO3_DLLPUBLIC SvOutPlaceObject : public SvInPlaceObject
 /*	[Beschreibung]
 
     Die Klasse SvOutPlaceObject ist ein Wrapper fuer alle Windows Ole-Objekte
@@ -58,39 +62,40 @@
 	[Probleme]
 */
 {
+private:
 	SvOutPlace_Impl *	pImpl;
 
-	void			DataChanged_Impl( BOOL bOnlyEmbedSource );
-	void			LoadSO_Cont();
-	BOOL			MakeWorkStorageWrap_Impl( SvStorage * pStor );
+	SO3_DLLPRIVATE void			DataChanged_Impl( BOOL bOnlyEmbedSource );
+	SO3_DLLPRIVATE void			LoadSO_Cont();
+	SO3_DLLPRIVATE BOOL			MakeWorkStorageWrap_Impl( SvStorage * pStor );
 
 protected:
-	virtual void    FillClass( SvGlobalName * pClassName,
+	SO3_DLLPRIVATE virtual void    FillClass( SvGlobalName * pClassName,
 							   ULONG * pFormat,
 							   String * pAppName,
 							   String * pFullTypeName,
 							   String * pShortTypeName,
                                long nFileFormat = SOFFICE_FILEFORMAT_CURRENT ) const;
 					// Protokoll
-	virtual void    Open( BOOL bOpen );
-	virtual void    Embed( BOOL bEmbedded );
-	virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
+	SO3_DLLPRIVATE virtual void    Open( BOOL bOpen );
+	SO3_DLLPRIVATE virtual void    Embed( BOOL bEmbedded );
+	SO3_DLLPRIVATE virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
 						Window * pWin, const Rectangle * pWorkRectPixel );
 
 					// Datenaustausch
-	virtual void    Draw( OutputDevice *,
+	SO3_DLLPRIVATE virtual void    Draw( OutputDevice *,
 						  const JobSetup & rSetup,
 						  USHORT nAspect = ASPECT_CONTENT );
 
 					// Laden speichern
-	virtual BOOL    InitNew( SvStorage * );
-	virtual BOOL    Load( SvStorage * );
-	virtual BOOL    Save();
-	virtual BOOL    SaveAs( SvStorage * );
-	virtual void    HandsOff();
-	virtual BOOL    SaveCompleted( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    InitNew( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Load( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Save();
+	SO3_DLLPRIVATE virtual BOOL    SaveAs( SvStorage * );
+	SO3_DLLPRIVATE virtual void    HandsOff();
+	SO3_DLLPRIVATE virtual BOOL    SaveCompleted( SvStorage * );
 
-					~SvOutPlaceObject();
+	SO3_DLLPRIVATE 				~SvOutPlaceObject();
 public:
 					SO2_DECL_BASIC_CLASS(SvOutPlaceObject)
 //					SO2_DECL_BASIC_CLASS_DLL(SvOutPlaceObject,SOAPP)
diff -urN so3.orig/inc/pastedlg.hxx so3/inc/pastedlg.hxx
--- so3.orig/inc/pastedlg.hxx	2005-09-07 23:37:12.000000000 +0200
+++ so3/inc/pastedlg.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -49,6 +49,10 @@
 #include <svtools/transfer.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /********************** SvPasteObjectDialog ******************************
 *************************************************************************/
 
@@ -56,15 +60,16 @@
 struct TransferableObjectDescriptor;
 
 
-class SvPasteObjectDialog
+class SO3_DLLPUBLIC SvPasteObjectDialog
 {
+private:
 	Table       	aSupplementTable;
 	SvGlobalName	aObjClassName;
 	String			aObjName;
 	USHORT      	nAspect;
 	BOOL        	bLink;
 
-	void        	SetDefault();
+	SO3_DLLPRIVATE void        	SetDefault();
 public:
 				SvPasteObjectDialog();
 				~SvPasteObjectDialog();
diff -urN so3.orig/inc/persist.hxx so3/inc/persist.hxx
--- so3.orig/inc/persist.hxx	2005-09-07 23:37:27.000000000 +0200
+++ so3/inc/persist.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -42,6 +42,9 @@
 #include <so2ref.hxx>
 #include <iface.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
 
 /*************************************************************************
 *************************************************************************/
@@ -74,7 +77,7 @@
 
 
 //=========================================================================
-class SvObjectContainer : virtual public SvObject
+class SO3_DLLPUBLIC SvObjectContainer : virtual public SvObject
 /*	[Beschreibung]
 
 	Diese Klasse stellt die Schnittstelle zur Verf"ugung, um auf
@@ -111,13 +114,14 @@
 
 #define SVEXT_PERSIST_STREAM "\002OlePres000"
 
-class SvPersist : public SvObjectContainer
+class SO3_DLLPUBLIC SvPersist : public SvObjectContainer
 {
 friend class SvInfoObject;
 friend class ImpPersistStorage;
 friend class ImpPersistFile;
 friend class ImpItemContainer;
 friend class SvFactory;
+private:
 	BOOL            bIsModified:1,
 					bIsInit:1,
 					bOpSave:1,
@@ -139,25 +143,25 @@
 	Time            aModifiedTime;
 	String			aFileName;	// nur fuer das IPersistFile-Interface
 
-	SvInfoObjectMemberList *GetInfoList();
-	void            CountModified( BOOL bDirection );
-	void            dtorClear();
-    BOOL            SaveElement( SvStorage*, SvInfoObject* );
-    SvPersistRef    CreateObjectFromStorage( SvInfoObject*, const SvStorageRef& );
-    BOOL            ImplCopy( SvPersist*, const String&, BOOL );
+	SO3_DLLPRIVATE SvInfoObjectMemberList *GetInfoList();
+	SO3_DLLPRIVATE void            CountModified( BOOL bDirection );
+	SO3_DLLPRIVATE void            dtorClear();
+    SO3_DLLPRIVATE BOOL            SaveElement( SvStorage*, SvInfoObject* );
+    SO3_DLLPRIVATE SvPersistRef    CreateObjectFromStorage( SvInfoObject*, const SvStorageRef& );
+    SO3_DLLPRIVATE BOOL            ImplCopy( SvPersist*, const String&, BOOL );
 
 protected:
-	void            InitMembers( SvStorage * );
-					~SvPersist();
+	SO3_DLLPRIVATE void            InitMembers( SvStorage * );
+	 				~SvPersist();
 #ifdef DBG_UTIL
 #define ASSERT_INIT()     AssertInit();
 #else
 #define ASSERT_INIT()
 #endif
-	void            AssertInit() const;
-	void			SetSaveFailed( BOOL bFail = TRUE )
+	SO3_DLLPRIVATE void            AssertInit() const;
+	SO3_DLLPRIVATE void			SetSaveFailed( BOOL bFail = TRUE )
 					{ bSaveFailed = bFail; }
-	BOOL    		GetSaveFailed() const { return bSaveFailed; }
+	SO3_DLLPRIVATE BOOL    		GetSaveFailed() const { return bSaveFailed; }
 
 	virtual void    ModifyChanged();
 
@@ -168,16 +172,16 @@
 	virtual void    HandsOff();                     // Rekursiv
 	virtual BOOL    SaveCompleted( SvStorage * );   // Rekursiv
 
-	BOOL            DoLoadContent( SvStorage *, BOOL bOwner );
+	SO3_DLLPRIVATE BOOL            DoLoadContent( SvStorage *, BOOL bOwner );
 	virtual void    LoadContent( SvStream & rStm, BOOL bOwner );
-	BOOL            DoSaveContent( SvStorage *, BOOL bOwner );
+	SO3_DLLPRIVATE BOOL            DoSaveContent( SvStorage *, BOOL bOwner );
 	virtual void    SaveContent( SvStream & rStm, BOOL bOwner );
 
-	BOOL            LoadChilds();                       // Rekursiv
+	SO3_DLLPRIVATE BOOL            LoadChilds();                       // Rekursiv
 	BOOL            SaveChilds();                       // Rekursiv
 	BOOL            SaveAsChilds( SvStorage * pNewStg );// Rekursiv
 	BOOL            SaveCompletedChilds( SvStorage * ); // Rekursiv
-	BOOL			HasStorage() const { return aStorage.Is(); }
+	SO3_DLLPRIVATE BOOL			HasStorage() const { return aStorage.Is(); }
 public:
 					SvPersist();
 					SO2_DECL_STANDARD_CLASS_DLL(SvPersist,SOAPP)
@@ -265,9 +269,10 @@
 
 SV_DECL_REF(SvInfoObject)
 class SvInfoObject_Impl;
-class SvInfoObject : public SvPersistBase
+class SO3_DLLPUBLIC SvInfoObject : public SvPersistBase
 {
 friend class SvPersist;
+private:
 	SvPersistRef    aObj;
     String          aObjName;           // object and substorage name
     String          aStorName;          // optional real storage name
@@ -276,10 +281,10 @@
 	BOOL            bDeleted;
 
 protected:
-					~SvInfoObject();
-	virtual void	Assign( const SvInfoObject * pObj );
-    void            SetRealStorageName( const String & rName );
-	void            SetStorageName( const String & rName )
+	SO3_DLLPRIVATE 				~SvInfoObject();
+	SO3_DLLPRIVATE virtual void	Assign( const SvInfoObject * pObj );
+    SO3_DLLPRIVATE void            SetRealStorageName( const String & rName );
+	SO3_DLLPRIVATE void            SetStorageName( const String & rName )
 					{ aStorName = rName; }
 public:
 					SV_DECL_PERSIST1(SvInfoObject,SvPersistBase,1)
diff -urN so3.orig/inc/plugin.hxx so3/inc/plugin.hxx
--- so3.orig/inc/plugin.hxx	2005-09-07 23:37:43.000000000 +0200
+++ so3/inc/plugin.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -40,13 +40,17 @@
 #include <svtools/ownlist.hxx>
 #include <ipenv.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 //=========================================================================
 class Timer;
 class INetURLObject;
 struct SvPlugInData_Impl;
 class SjJScriptPluginObject;
 class SjJScriptJavaObject;
-class SvPlugInObject : public SvInPlaceObject
+class SO3_DLLPUBLIC SvPlugInObject : public SvInPlaceObject
 /*	[Beschreibung]
 
 	Die Klasse PlugInObject ist die Abbildung eines InPlace-Objektes
@@ -60,6 +64,7 @@
 {
 friend class SvPlugInEnvironment;
 friend class Executor_Impl;
+private:
 	SvPlugInEnvironment * pPlugInEnv;
 	SvPlugInData_Impl *	pImpl;
 	SvCommandList	aCmdList;
@@ -70,41 +75,41 @@
 	DECL_STATIC_LINK( SvPlugInObject, NewPlugInHdl_Impl, Timer * );
 	DECL_STATIC_LINK( SvPlugInObject, DataAvailable, void* );
 
-	void			DataChanged_Impl( BOOL bOnlyEmbedSource );
+	SO3_DLLPRIVATE void			DataChanged_Impl( BOOL bOnlyEmbedSource );
 protected:
-	BOOL			DoStartPlugIn( );
-	BOOL			StartPlugIn( );
-	virtual void    FillClass( SvGlobalName * pClassName,
+	SO3_DLLPRIVATE BOOL			DoStartPlugIn( );
+	SO3_DLLPRIVATE BOOL			StartPlugIn( );
+	SO3_DLLPRIVATE virtual void    FillClass( SvGlobalName * pClassName,
 							   ULONG * pFormat,
 							   String * pAppName,
 							   String * pFullTypeName,
 							   String * pShortTypeName,
                                long nFileFormat = SOFFICE_FILEFORMAT_CURRENT ) const;
 					// Protokoll
-	virtual void    Open( BOOL bOpen );
-	virtual void    Embed( BOOL );
-	virtual void    InPlaceActivate( BOOL );
-	virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
+	SO3_DLLPRIVATE virtual void    Open( BOOL bOpen );
+	SO3_DLLPRIVATE virtual void    Embed( BOOL );
+	SO3_DLLPRIVATE virtual void    InPlaceActivate( BOOL );
+	SO3_DLLPRIVATE virtual ErrCode Verb( long, SvEmbeddedClient * pCallerClient,
 						Window * pWin, const Rectangle * pWorkRectPixel );
 
 					// Datenaustausch
-	virtual void    SetVisArea( const Rectangle & rVisArea );
-	virtual void    Draw( OutputDevice *,
+	SO3_DLLPRIVATE virtual void    SetVisArea( const Rectangle & rVisArea );
+	SO3_DLLPRIVATE virtual void    Draw( OutputDevice *,
 						  const JobSetup & rSetup,
 						  USHORT nAspect = ASPECT_CONTENT );
 
 					// Laden speichern
-	virtual BOOL    InitNew( SvStorage * );
-	virtual BOOL    Load( SvStorage * );
-	virtual BOOL    Save();
-	virtual BOOL    SaveAs( SvStorage * );
-	virtual void    HandsOff();
-	virtual BOOL    SaveCompleted( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    InitNew( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Load( SvStorage * );
+	SO3_DLLPRIVATE virtual BOOL    Save();
+	SO3_DLLPRIVATE virtual BOOL    SaveAs( SvStorage * );
+	SO3_DLLPRIVATE virtual void    HandsOff();
+	SO3_DLLPRIVATE virtual BOOL    SaveCompleted( SvStorage * );
 
 	// Spaeter gerne mal virtuell...
-	void            SetMIMEDetectedLink( const Link& rLink );
+	SO3_DLLPRIVATE void            SetMIMEDetectedLink( const Link& rLink );
 
-					~SvPlugInObject();
+	SO3_DLLPRIVATE 				~SvPlugInObject();
 public:
 					SO2_DECL_BASIC_CLASS_DLL(SvPlugInObject,SOAPP)
 					SvPlugInObject();
diff -urN so3.orig/inc/protocol.hxx so3/inc/protocol.hxx
--- so3.orig/inc/protocol.hxx	2005-09-07 23:37:56.000000000 +0200
+++ so3/inc/protocol.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,6 +46,10 @@
 #include <tools/string.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class  SvEmbeddedObject;
@@ -56,17 +60,18 @@
 class  ImplSvEditObjectProtocol;
 class  String;
 
-class SvEditObjectProtocol
+class SO3_DLLPUBLIC SvEditObjectProtocol
 {
 friend class SoDll;
+private:
 	ImplSvEditObjectProtocol * pImp;
-	static void         Imp_DeleteDefault();
-	BOOL                Release();
+	SO3_DLLPRIVATE static void         Imp_DeleteDefault();
+	SO3_DLLPRIVATE BOOL                Release();
 public:
 	SvEditObjectProtocol();
 	SvEditObjectProtocol( SvEmbeddedObject *, SvEmbeddedClient * );
 	SvEditObjectProtocol( const SvEditObjectProtocol & );
-	SvEditObjectProtocol & operator = ( const SvEditObjectProtocol & );
+	SO3_DLLPRIVATE SvEditObjectProtocol & operator = ( const SvEditObjectProtocol & );
 	~SvEditObjectProtocol();
 
 	// Objekte
diff -urN so3.orig/inc/pseudo.hxx so3/inc/pseudo.hxx
--- so3.orig/inc/pseudo.hxx	2005-09-07 23:38:11.000000000 +0200
+++ so3/inc/pseudo.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -45,6 +45,10 @@
 #include <svtools/ownlist.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class  ImpOleObject;
 class  SvBaseLink;
 class  SvEmbeddedClient;
@@ -52,7 +56,7 @@
 class  Menu;
 
 //=========================================================================
-class SvVerb
+class SO3_DLLPUBLIC SvVerb
 /*	[Beschreibung]
 
 	Die Klasse beschreibt einen Befehl, der an ein SvPseudoObject
@@ -63,6 +67,7 @@
 	<SvPseudoObject::DoVerb>
 */
 {
+private:
 	long            nId;
 	String          aName;
 	UniqueItemId    aMenuId;
@@ -83,7 +88,7 @@
 };
 
 //=========================================================================
-class SvVerbList
+class SO3_DLLPUBLIC SvVerbList
 {
 	PRV_SV_DECL_OWNER_LIST(SvVerbList,SvVerb)
 };
@@ -111,7 +116,7 @@
 #define SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE	2048
 #define SVOBJ_MISCSTATUS_SPECIALOBJECT          4096
 
-class SvPseudoObject : virtual public SvObject
+class SO3_DLLPUBLIC SvPseudoObject : virtual public SvObject
 /*	[Beschreibung]
 
     Diese Klasse stellt die Basisschnittstelle fuer Klassen zur Verfuegung,
@@ -124,6 +129,7 @@
 */
 {
 friend class ImpOleObject;
+private:
 	SvVerbList *	pVerbs;          	// Liste der Verben
 	BOOL			bDeleteVerbs;		// TRUE, wenn pVerbs loeschen
 protected:
diff -urN so3.orig/inc/rmapplet.hxx so3/inc/rmapplet.hxx
--- so3.orig/inc/rmapplet.hxx	2005-09-07 23:38:27.000000000 +0200
+++ so3/inc/rmapplet.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -44,6 +44,10 @@
 #include <dcca/object.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 // -----------------------------------------------------------------------
 
 DCA_NAMESPACE(OObjectBroker, dca)* ImpGetBroker();
@@ -73,7 +77,7 @@
 // - class RmBasisObject -
 // -----------------------
 
-class RmBasisObject : public DCA_NAMESPACE(OObj , dca)
+class SO3_DLLPUBLIC RmBasisObject : public DCA_NAMESPACE(OObj , dca)
 {
 protected:
 	const char*     pClassName;
@@ -94,7 +98,7 @@
 // - class RmAppletStub -
 // ----------------------
 
-class RmAppletStub : public RmBasisObject
+class SO3_DLLPUBLIC RmAppletStub : public RmBasisObject
 {
 public:
 						RmAppletStub();
@@ -118,7 +122,7 @@
 // - class RmAppletContext -
 // -------------------------
 
-class RmAppletContext : public RmBasisObject
+class SO3_DLLPUBLIC RmAppletContext : public RmBasisObject
 {
 public:
 								RmAppletContext( );
@@ -138,7 +142,7 @@
 // - class RmAppletObject -
 // ------------------------
 
-class RmAppletObject : public RmBasisObject
+class SO3_DLLPUBLIC RmAppletObject : public RmBasisObject
 {
 public:
 						RmAppletObject( );
diff -urN so3.orig/inc/soipc.hxx so3/inc/soipc.hxx
--- so3.orig/inc/soipc.hxx	2005-09-07 23:39:56.000000000 +0200
+++ so3/inc/soipc.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,6 +46,10 @@
 #include <ipc2.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class SvStorage;
@@ -104,7 +108,7 @@
 #define SO_BINDCTX_GETMODE  		0x80
 
 
-class SvSoIPCServer : public SvIPCServiceMgr
+class SO3_DLLPUBLIC SvSoIPCServer : public SvIPCServiceMgr
 {
 public:
 					SvSoIPCServer();
@@ -113,13 +117,13 @@
 	virtual SvIPCService* GetObject( SvGlobalName& rAdr );
 };
 
-class SvSoIPCService : public SvIPCService
+class SO3_DLLPUBLIC SvSoIPCService : public SvIPCService
 {
 friend class SvSoIPCServer;
 	SvObject * pObj;
 protected:
-	virtual BOOL Request( ULONG nSeviceId, SvStream* pIn, SvStream* pOut );
-	virtual void NotifyLock( BOOL bLock );
+	SO3_DLLPRIVATE virtual BOOL Request( ULONG nSeviceId, SvStream* pIn, SvStream* pOut );
+	SO3_DLLPRIVATE virtual void NotifyLock( BOOL bLock );
 public:
 				SvSoIPCService( SvObject * pObj );
 				~SvSoIPCService();
@@ -130,7 +134,7 @@
 class ErrorBox;
 
 // muss struct wegen define auf IUnknown
-class SvSoIPCClient : public SvIPCClient
+class SO3_DLLPUBLIC SvSoIPCClient : public SvIPCClient
 {
 	SvObject *      pObj;
 	ErrorBox *		pTimeoutBox;
diff -urN so3.orig/inc/so2dll.hxx so3/inc/so2dll.hxx
--- so3.orig/inc/so2dll.hxx	2005-09-07 23:38:56.000000000 +0200
+++ so3/inc/so2dll.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -46,6 +46,10 @@
 #include <tools/globname.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class ImpFactory;
@@ -71,7 +75,7 @@
 struct SvBindingData;
 
 //=========================================================================
-struct ConvertTo_Impl
+struct SO3_DLLPRIVATE ConvertTo_Impl
 /*  [Beschreibung]
 
 	In dieser Struktur werden Informationen "uber den Vorg"anger und den
@@ -100,7 +104,7 @@
 #define SO3_OFFICE_VERSIONS	5
 
 
-class SoDll
+class SO3_DLLPUBLIC SoDll
 {
 friend class ImpFactory;
 friend class SvFactory;
diff -urN so3.orig/inc/so3/so3dllapi.h so3/inc/so3/so3dllapi.h
--- so3.orig/inc/so3/so3dllapi.h	1970-01-01 01:00:00.000000000 +0100
+++ so3/inc/so3/so3dllapi.h	2005-12-06 14:30:57.000000000 +0100
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ *  $RCSfile: libso3_gcc4_visibility_markup.diff,v $
+ *
+ *  $Revision: 1.6 $
+ *
+ *  last change: $Author: rengelhard $ $Date: 2006/08/14 23:45:45 $
+ *
+ *  The Contents of this file are made available subject to the terms of
+ *  either of the following licenses
+ *
+ *         - GNU Lesser General Public License Version 2.1
+ *         - Sun Industry Standards Source License Version 1.1
+ *
+ *  Sun Microsystems Inc., October, 2000
+ *
+ *  GNU Lesser General Public License Version 2.1
+ *  =============================================
+ *  Copyright 2000 by Sun Microsystems, Inc.
+ *  901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License version 2.1, as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ *  MA  02111-1307  USA
+ *
+ *
+ *  Sun Industry Standards Source License Version 1.1
+ *  =================================================
+ *  The contents of this file are subject to the Sun Industry Standards
+ *  Source License Version 1.1 (the "License"); You may not use this file
+ *  except in compliance with the License. You may obtain a copy of the
+ *  License at http://www.openoffice.org/license.html.
+ *
+ *
+ *  Software provided under this License is provided on an "AS IS" basis,
+ *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ *  See the License for the specific provisions governing your rights and
+ *  obligations concerning the Software.
+ *
+ *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ *  Copyright: 2000 by Sun Microsystems, Inc.
+ *  Copyright: 2004 by Novell, Inc.
+ *  Copyright: 2005 by Intel Corporation.
+ *
+ *  All Rights Reserved.
+ *
+ *  Contributor(s): ndevaiah____________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SO3DLLAPI_H
+#define INCLUDED_SO3DLLAPI_H
+                                                                                                                             
+#ifndef _SAL_TYPES_H_
+#include "sal/types.h"
+#endif
+                                                                                                                             
+#if defined(SO3_DLLIMPLEMENTATION)
+#define SO3_DLLPUBLIC  SAL_DLLPUBLIC_EXPORT
+#else
+#define SO3_DLLPUBLIC  SAL_DLLPUBLIC_IMPORT
+#endif
+#define SO3_DLLPRIVATE SAL_DLLPRIVATE
+                                                                                                                             
+#endif /* INCLUDED_SO3DLLAPI_H */
+
diff -urN so3.orig/inc/staticbaseurl.hxx so3/inc/staticbaseurl.hxx
--- so3.orig/inc/staticbaseurl.hxx	2005-09-07 23:40:14.000000000 +0200
+++ so3/inc/staticbaseurl.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -47,6 +47,10 @@
 #include "tools/urlobj.hxx"
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class ByteString;
 class String;
  
@@ -58,7 +62,7 @@
  */
 namespace StaticBaseUrl {
 
-String RelToAbs(
+SO3_DLLPRIVATE String RelToAbs(
     ByteString const & rTheRelURIRef, bool bIgnoreFragment = false,
     INetURLObject::EncodeMechanism eEncodeMechanism
     = INetURLObject::WAS_ENCODED,
@@ -76,7 +80,7 @@
     rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
     INetURLObject::FSysStyle eStyle = INetURLObject::FSYS_DETECT);
 
-String AbsToRel(
+SO3_DLLPRIVATE String AbsToRel(
     ByteString const & rTheAbsURIRef,
     INetURLObject::EncodeMechanism eEncodeMechanism
     = INetURLObject::WAS_ENCODED,
@@ -94,7 +98,7 @@
     rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8,
     INetURLObject::FSysStyle eStyle = INetURLObject::FSYS_DETECT);
 
-bool SetBaseURL(
+SO3_DLLPRIVATE bool SetBaseURL(
     ByteString const & rTheBaseURIRef,
     INetURLObject::EncodeMechanism eMechanism = INetURLObject::WAS_ENCODED,
     rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
@@ -108,7 +112,7 @@
     INetURLObject::DecodeMechanism eMechanism = INetURLObject::DECODE_TO_IURI,
     rtl_TextEncoding eCharset = RTL_TEXTENCODING_UTF8);
 
-String SmartRelToAbs(
+SO3_DLLPRIVATE String SmartRelToAbs(
     ByteString const & rTheRelURIRef, bool bIgnoreFragment = false,
     INetURLObject::EncodeMechanism eEncodeMechanism
     = INetURLObject::WAS_ENCODED,
diff -urN so3.orig/inc/svlink.hxx so3/inc/svlink.hxx
--- so3.orig/inc/svlink.hxx	2005-09-07 23:40:28.000000000 +0200
+++ so3/inc/svlink.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -40,6 +40,10 @@
 #include <iface.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 /*************************************************************************
 *************************************************************************/
 class  SvLinkName;
@@ -49,11 +53,11 @@
 SO2_DECL_REF(SvLinkName)
 #endif
 
-class SvLinkObject : virtual public SvObject
+class SO3_DLLPUBLIC SvLinkObject : virtual public SvObject
 {
 	IOleLink *              pObjI;
 protected:
-					~SvLinkObject();
+	SO3_DLLPRIVATE 				~SvLinkObject();
 public:
 					SvLinkObject();
 					SO2_DECL_STANDARD_CLASS_DLL(SvLinkObject,SOAPP)
diff -urN so3.orig/inc/svstor.hxx so3/inc/svstor.hxx
--- so3.orig/inc/svstor.hxx	2005-09-07 23:40:45.000000000 +0200
+++ so3/inc/svstor.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -45,6 +45,10 @@
 
 #include <so2defs.hxx>
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 #ifdef SvStorage
 #undef SvStorage
 #undef SvStorageRef
@@ -54,18 +58,18 @@
 
 class SvStorage;
 class StorageStream;
-class SvStorageStream : virtual public SvObject, public SotStorageStream
+class SO3_DLLPUBLIC SvStorageStream : virtual public SvObject, public SotStorageStream
 {
 friend class SvStorage;
 friend class ImpStream;
 	void *   pObjI;      // Zeiger auf das Speichermedium
 	void  *  pRelease;   // OLE-Spec, wenn Erzeuger zerstoert
-	virtual ULONG       GetData( void* pData, ULONG nSize );
-	virtual ULONG       PutData( const void* pData, ULONG nSize );
-	virtual ULONG       SeekPos( ULONG nPos );
-	virtual void        FlushData();
+	SO3_DLLPRIVATE virtual ULONG       GetData( void* pData, ULONG nSize );
+	SO3_DLLPRIVATE virtual ULONG       PutData( const void* pData, ULONG nSize );
+	SO3_DLLPRIVATE virtual ULONG       SeekPos( ULONG nPos );
+	SO3_DLLPRIVATE virtual void        FlushData();
 protected:
-						~SvStorageStream();
+	SO3_DLLPRIVATE 					~SvStorageStream();
 public:
 	static void			Ole2SvStreamMode( ULONG nOleMode,
 										StreamMode *, StorageMode * );
@@ -97,14 +101,14 @@
 class  ImpPersistFile;
 class  SvStorageInfoList;
 class  Storage;
-class SvStorage : virtual public SvObject, public SotStorage
+class SO3_DLLPUBLIC SvStorage : virtual public SvObject, public SotStorage
 {
 friend class SvStorageStream;
 friend class ImpPersistFile;
 	void	 *  pRelease;  // OLE-Spec, wenn Erzeuger zerstoert
 	void *		pObjI;     // Zeiger auf das Speichermedium
 protected:
-						~SvStorage();
+	SO3_DLLPRIVATE 					~SvStorage();
 public:
 						SvStorage( const String &,
 								   StreamMode = STREAM_STD_READWRITE,
diff -urN so3.orig/inc/svuidlg.hxx so3/inc/svuidlg.hxx
--- so3.orig/inc/svuidlg.hxx	2005-09-07 23:41:20.000000000 +0200
+++ so3/inc/svuidlg.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -41,9 +41,14 @@
 
 #include <svtools/svmedit.hxx>	// MultiLineEdit
 
+
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 // class MdPasteObject ---------------------------------------------------
 
-class MdPasteObject : public ModalDialog
+class SO3_DLLPUBLIC MdPasteObject : public ModalDialog
 {
 protected:
     FixedText aFtSource;
@@ -64,7 +69,7 @@
 
 // class MdUpdateBaselinks -----------------------------------------------
 
-class MdUpdateBaselinks : public ModalDialog
+class SO3_DLLPUBLIC MdUpdateBaselinks : public ModalDialog
 {
 protected:
     FixedText aFtFiles;
@@ -100,7 +105,7 @@
 
 // class MdDdeLinkedit ---------------------------------------------------
 
-class MdDdeLinkedit : public ModalDialog
+class SO3_DLLPUBLIC MdDdeLinkedit : public ModalDialog
 {
 protected:
     FixedText aFtDdeApp;
@@ -118,7 +123,7 @@
 
 // class MdInsertObjectPlugin --------------------------------------------
 
-class MdInsertObjectPlugin : public ModalDialog
+class SO3_DLLPUBLIC MdInsertObjectPlugin : public ModalDialog
 {
 protected:
     Edit aEdFileurl;
@@ -135,7 +140,7 @@
 
 // class MdInsertObjectApplet --------------------------------------------
 
-class MdInsertObjectApplet : public ModalDialog
+class SO3_DLLPUBLIC MdInsertObjectApplet : public ModalDialog
 {
 protected:
     FixedText aFtClassfile;
@@ -155,7 +160,7 @@
 
 // class MdInsertOleobject -----------------------------------------------
 
-class MdInsertOleobject : public ModalDialog
+class SO3_DLLPUBLIC MdInsertOleobject : public ModalDialog
 {
 protected:
     RadioButton aRbNewObject;
diff -urN so3.orig/inc/transbnd.hxx so3/inc/transbnd.hxx
--- so3.orig/inc/transbnd.hxx	2005-09-07 23:41:36.000000000 +0200
+++ so3/inc/transbnd.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -76,6 +76,10 @@
 #include <transprt.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class SfxCancelManager;
 class SfxCancellable;
 
@@ -94,7 +98,7 @@
  * SvBinding interface.
  *
  *======================================================================*/
-class SvBinding : public SvBindingTransportCallback, public SvRefBase
+class SO3_DLLPUBLIC SvBinding : public SvBindingTransportCallback, public SvRefBase
 {
 	/** Representation.
 	*/
@@ -118,43 +122,43 @@
 
 	/** StartTransport.
 	*/
-	void StartTransport (void);
+	SO3_DLLPRIVATE void StartTransport (void);
 
 	/** SvBindingTransportCallback implementation.
 	*/
-	virtual void OnStart (void);
+	SO3_DLLPRIVATE virtual void OnStart (void);
 
-	virtual void OnError (
+	SO3_DLLPRIVATE virtual void OnError (
 		ErrCode eErrCode);
 
-	virtual void OnMimeAvailable (
+	SO3_DLLPRIVATE virtual void OnMimeAvailable (
 		const String &rMime);
 
-	virtual void OnExpiresAvailable (
+	SO3_DLLPRIVATE virtual void OnExpiresAvailable (
 		const DateTime &rExpires);
 
-	virtual void OnHeaderAvailable (
+	SO3_DLLPRIVATE virtual void OnHeaderAvailable (
 		const String &rName, const String &rValue);
 
-	virtual void OnDataAvailable (
+	SO3_DLLPRIVATE virtual void OnDataAvailable (
 		SvStatusCallbackType  eType,
 		ULONG                 nSize,
 		SvLockBytes          *pLockBytes);
 
-	virtual void OnProgress (
+	SO3_DLLPRIVATE virtual void OnProgress (
 		ULONG nNow, ULONG nEnd, SvBindStatus eStatus);
 
-	virtual void OnRedirect (
+	SO3_DLLPRIVATE virtual void OnRedirect (
 		const String &rUrl);
 
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvBinding);
+	SO3_DLLPRIVATE COPYCTOR_API(SvBinding);
 
 protected:
 	/** Destruction (SvRefBase).
 	*/
-	virtual ~SvBinding (void);
+	SO3_DLLPRIVATE virtual ~SvBinding (void);
 
 public:
 	/** Construction.
@@ -272,7 +276,7 @@
  * SvBindStatusCallback interface.
  *
  *======================================================================*/
-struct SvProgressArg
+struct SO3_DLLPRIVATE SvProgressArg
 {
 	ULONG         nProgress;
 	ULONG         nMax;
@@ -283,7 +287,7 @@
 	SvProgressArg (const String& rStatusText) : rStatus (rStatusText) {}
 };
 
-class SvBindStatusCallback : public SvRefBase
+class SO3_DLLPUBLIC SvBindStatusCallback : public SvRefBase
 {
 	/** Representation.
 	*/
@@ -342,7 +346,7 @@
  * SvKeyValue.
  *
  *======================================================================*/
-class SvKeyValue
+class SO3_DLLPUBLIC SvKeyValue
 {
 	/** Representation.
 	*/
@@ -365,7 +369,7 @@
 
 	/** Assignment.
 	*/
-	SvKeyValue& operator= (SvKeyValue &rOther)
+	SO3_DLLPRIVATE SvKeyValue& operator= (SvKeyValue &rOther)
 	{
 		m_aKey   = rOther.m_aKey;
 		m_aValue = rOther.m_aValue;
@@ -387,7 +391,7 @@
  *
  *======================================================================*/
 class SvKeyValueList_Impl;
-class SvKeyValueIterator : public SvRefBase
+class SO3_DLLPUBLIC SvKeyValueIterator : public SvRefBase
 {
 	/** Representation.
 	*/
@@ -396,7 +400,7 @@
 
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvKeyValueIterator);
+	SO3_DLLPRIVATE COPYCTOR_API(SvKeyValueIterator);
 
 public:
 	/** Construction/Destruction.
@@ -418,7 +422,7 @@
  * SvRemoteStream.
  *
  *======================================================================*/
-class SvRemoteStream : public SvStream
+class SO3_DLLPUBLIC SvRemoteStream : public SvStream
 {
 	SvBindingRef m_xBinding;
 	String       m_aUrl;
diff -urN so3.orig/inc/transprt.hxx so3/inc/transprt.hxx
--- so3.orig/inc/transprt.hxx	2005-09-07 23:41:52.000000000 +0200
+++ so3/inc/transprt.hxx	2005-12-06 14:30:57.000000000 +0100
@@ -56,6 +56,10 @@
 #include <binding.hxx>
 #endif
 
+#ifndef INCLUDED_SO3DLLAPI_H
+#include "so3/so3dllapi.h"
+#endif
+
 class SvBindingTransport;
 class SvBindingTransportFactory;
 class SvBindingTransportCallback;
@@ -70,11 +74,11 @@
  * SvBindingTransport interface.
  *
  *======================================================================*/
-class SvBindingTransport
+class SO3_DLLPUBLIC SvBindingTransport
 {
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvBindingTransport);
+	SO3_DLLPRIVATE COPYCTOR_API(SvBindingTransport);
 
 public:
 	SvBindingTransport (void);
@@ -97,11 +101,11 @@
  * SvBindingTransportFactory interface.
  *
  *======================================================================*/
-class SvBindingTransportFactory
+class SO3_DLLPUBLIC SvBindingTransportFactory
 {
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvBindingTransportFactory);
+	SO3_DLLPRIVATE COPYCTOR_API(SvBindingTransportFactory);
 
 public:
 	SvBindingTransportFactory (void);
@@ -122,7 +126,7 @@
  *
  *======================================================================*/
 class DateTime;
-class SvBindingTransportCallback
+class SO3_DLLPUBLIC SvBindingTransportCallback
 {
 public:
 	virtual void OnStart (void) = 0;
@@ -151,7 +155,7 @@
  * SvBindingTransportContext.
  *
  *======================================================================*/
-class SvBindingTransportContext
+class SO3_DLLPUBLIC SvBindingTransportContext
 {
 	/** Representation.
 	*/
@@ -220,7 +224,7 @@
  * SvLockBytesFactory interface.
  *
  *======================================================================*/
-class SvLockBytesFactory
+class SO3_DLLPUBLIC SvLockBytesFactory
 {
 	/** Representation.
 	*/
@@ -228,7 +232,7 @@
 
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvLockBytesFactory);
+	SO3_DLLPRIVATE COPYCTOR_API(SvLockBytesFactory);
 
 public:
 	SvLockBytesFactory (const String & rWildcard);
@@ -247,7 +251,7 @@
  * SfxSimpleLockBytesFactory interface.
  *
  *======================================================================*/
-class SfxSimpleLockBytesFactory :
+class SO3_DLLPUBLIC SfxSimpleLockBytesFactory :
 	public SvLockBytesFactory, public SvRefBase
 {
 	/** Representation.
@@ -259,7 +263,7 @@
 
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SfxSimpleLockBytesFactory);
+	SO3_DLLPRIVATE COPYCTOR_API(SfxSimpleLockBytesFactory);
 
 public:
 	/** Destruction (protected) (SvRefBase).
@@ -289,11 +293,11 @@
  * SvLockBytesTransportFactory interface.
  *
  *======================================================================*/
-class SvLockBytesTransportFactory : public SvBindingTransportFactory
+class SO3_DLLPUBLIC SvLockBytesTransportFactory : public SvBindingTransportFactory
 {
 	/** Not implemented.
 	*/
-	COPYCTOR_API(SvLockBytesTransportFactory);
+	SO3_DLLPRIVATE COPYCTOR_API(SvLockBytesTransportFactory);
 
 public:
 	SvLockBytesTransportFactory (void);
@@ -313,11 +317,11 @@
  * CntTransportFactory interface.
  *
  *======================================================================*/
-class CntTransportFactory : public SvBindingTransportFactory
+class SO3_DLLPUBLIC CntTransportFactory : public SvBindingTransportFactory
 {
 	/** Not implemented.
 	*/
-	COPYCTOR_API(CntTransportFactory);
+	SO3_DLLPRIVATE COPYCTOR_API(CntTransportFactory);
 
 public:
 	CntTransportFactory (void);
--- so3/source/data/makefile.mk
+++ so3/source/data/makefile.mk
@@ -37,13 +37,13 @@
 
 PRJNAME=so3
 TARGET=data
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 
 # --- Settings -----------------------------------------------------
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 
 # --- Files --------------------------------------------------------
--- so3/source/dialog/makefile.mk
+++ so3/source/dialog/makefile.mk
@@ -37,12 +37,12 @@
 
 PRJNAME=so3
 TARGET=dialog
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Settings -----------------------------------------------------
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Files --------------------------------------------------------
 
--- so3/source/inplace/makefile.mk
+++ so3/source/inplace/makefile.mk
@@ -37,12 +37,12 @@
 
 PRJNAME=so3
 TARGET=inplace
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Settings -----------------------------------------------------
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Files --------------------------------------------------------
 
--- so3/source/misc/makefile.mk
+++ so3/source/misc/makefile.mk
@@ -37,12 +37,12 @@
 
 PRJNAME=so3
 TARGET=misc
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Settings -----------------------------------------------------
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 
 # --- Files --------------------------------------------------------
--- so3/source/ole/makefile.mk
+++ so3/source/ole/makefile.mk
@@ -37,12 +37,12 @@
 
 PRJNAME=so3
 TARGET=ole
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Settings -----------------------------------------------------
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 
 # --- Files --------------------------------------------------------
--- so3/source/persist/makefile.mk
+++ so3/source/persist/makefile.mk
@@ -36,14 +36,14 @@
 PRJ=..$/..
 PRJNAME=so3
 TARGET=persist
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 ENABLE_EXCEPTIONS=TRUE

 # --- Settings -----------------------------------------------------

 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 .IF "$(NO_DLL)" == "NO_DLL"
 SLO=$(OBJ)
--- so3/source/solink/makefile.mk
+++ so3/source/solink/makefile.mk
@@ -37,7 +37,6 @@
 
 PRJNAME=so3
 TARGET=solink
-.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 VERSION=$(UPD)
 
 .IF "$(debug)" != ""
@@ -51,6 +51,7 @@
 .INCLUDE :  svpre.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 # --- Files --------------------------------------------------------
 
diff -urN so3.orig/prj/d.lst so3/prj/d.lst
--- so3.orig/prj/d.lst	2005-01-11 12:25:12.000000000 +0100
+++ so3/prj/d.lst	2005-12-06 14:30:57.000000000 +0100
@@ -48,3 +48,6 @@
 hedabu: ..\inc\transbnd.hxx %_DEST%\inc%_EXT%\so3\transbnd.hxx
 hedabu: ..\inc\transprt.hxx %_DEST%\inc%_EXT%\so3\transprt.hxx
 ..\inc\staticbaseurl.hxx %_DEST%\inc%_EXT%\so3\staticbaseurl.hxx
+
+mkdir: %_DEST%\inc%_EXT%\so3\so3
+hedabu: ..\inc\so3\so3dllapi.h %_DEST%\inc%_EXT%\so3\so3\so3dllapi.h
diff -urN so3.orig/util/makefile.mk so3/util/makefile.mk
--- so3.orig/util/makefile.mk	2005-09-08 00:01:26.000000000 +0200
+++ so3/util/makefile.mk	2005-12-06 14:30:57.000000000 +0100
@@ -50,6 +50,7 @@
 # --- Settings -----------------------------------------------------
 
 .INCLUDE :  settings.mk
+.INCLUDE :  $(PRJ)$/util$/makefile.pmk
 
 RSCFLAGS+=-p
 
diff -urN so3.orig/util/makefile.pmk so3/util/makefile.pmk
--- so3.orig/util/makefile.pmk	2005-09-08 00:01:53.000000000 +0200
+++ so3/util/makefile.pmk	2005-12-06 14:30:57.000000000 +0100
@@ -32,3 +32,11 @@
 #     MA  02111-1307  USA
 #
 #*************************************************************************
+
+# Reduction of exported symbols:
+CDEFS += -DSO3_DLLIMPLEMENTATION
+.IF "$(COMNAME)" == "gcc3" && "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+CFLAGS += -fvisibility=hidden
+.ELIF "$(COMNAME)" == "sunpro5" && "$(CCNUMVER)" >= "00050005"
+CFLAGS += -xldscope=hidden
+.ENDIF
