[gtkmm/use-dllexport: 58/62] gtk/src/*.hg: Mark classes and APIs with GTKMM_API



commit 7d13d7615c126a7378ae01e174de4ce0274e9efe
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Fri Jun 5 16:35:51 2020 +0800

    gtk/src/*.hg: Mark classes and APIs with GTKMM_API
    
    Mark the classes and APIs, along with the generated items where necessary, with
    GTKMM_API, so that can use compiler directives to export symbols from the built
    library directly without the need of other tools (e.g. gendef.exe) on compilers
    where this is necessary.

 gtk/src/aboutdialog.hg           |  6 ++--
 gtk/src/accellabel.hg            |  4 +--
 gtk/src/actionable.hg            |  6 ++--
 gtk/src/actionbar.hg             |  4 +--
 gtk/src/adjustment.hg            | 12 +++++---
 gtk/src/appchooser.hg            |  6 ++--
 gtk/src/appchooserbutton.hg      |  4 +--
 gtk/src/appchooserdialog.hg      |  4 +--
 gtk/src/appchooserwidget.hg      |  4 +--
 gtk/src/application.hg           |  8 ++---
 gtk/src/applicationwindow.hg     |  6 ++--
 gtk/src/aspectframe.hg           |  4 +--
 gtk/src/assistant.hg             |  4 +--
 gtk/src/assistantpage.hg         | 10 +++---
 gtk/src/binlayout.hg             |  4 +--
 gtk/src/border.hg                |  6 ++--
 gtk/src/box.hg                   |  4 +--
 gtk/src/boxlayout.hg             |  4 +--
 gtk/src/buildable.hg             |  6 ++--
 gtk/src/builder.hg               |  8 ++---
 gtk/src/button.hg                |  4 +--
 gtk/src/calendar.hg              |  4 +--
 gtk/src/cellarea.hg              |  6 ++--
 gtk/src/cellareabox.hg           |  4 +--
 gtk/src/cellareacontext.hg       |  8 +++--
 gtk/src/celleditable.hg          |  6 ++--
 gtk/src/celllayout.hg            |  4 +--
 gtk/src/cellrenderer.hg          | 10 +++---
 gtk/src/cellrendereraccel.hg     |  6 ++--
 gtk/src/cellrenderercombo.hg     |  4 +--
 gtk/src/cellrendererpixbuf.hg    |  4 +--
 gtk/src/cellrendererprogress.hg  |  4 +--
 gtk/src/cellrendererspin.hg      |  6 ++--
 gtk/src/cellrendererspinner.hg   |  4 +--
 gtk/src/cellrenderertext.hg      |  6 ++--
 gtk/src/cellrenderertoggle.hg    |  4 +--
 gtk/src/cellview.hg              |  4 +--
 gtk/src/centerbox.hg             |  4 +--
 gtk/src/centerlayout.hg          |  6 ++--
 gtk/src/checkbutton.hg           |  4 +--
 gtk/src/colorbutton.hg           |  4 +--
 gtk/src/colorchooser.hg          |  4 +--
 gtk/src/colorchooserdialog.hg    |  4 +--
 gtk/src/combobox.hg              |  6 ++--
 gtk/src/comboboxtext.hg          |  4 +--
 gtk/src/constraint.hg            | 10 +++---
 gtk/src/constraintguide.hg       |  4 +--
 gtk/src/constraintlayout.hg      |  6 ++--
 gtk/src/constrainttarget.hg      |  6 ++--
 gtk/src/csslocation.hg           |  5 ++-
 gtk/src/cssprovider.hg           |  8 ++---
 gtk/src/csssection.hg            |  4 +--
 gtk/src/dialog.hg                |  6 ++--
 gtk/src/dragicon.hg              |  4 +--
 gtk/src/dragsource.hg            |  4 +--
 gtk/src/drawingarea.hg           |  4 +--
 gtk/src/dropcontrollermotion.hg  |  4 +--
 gtk/src/droptarget.hg            |  4 +--
 gtk/src/droptargetasync.hg       |  4 +--
 gtk/src/editable.hg              |  6 ++--
 gtk/src/emojichooser.hg          |  4 +--
 gtk/src/entry.hg                 |  4 +--
 gtk/src/entrybuffer.hg           |  4 +--
 gtk/src/entrycompletion.hg       |  8 ++---
 gtk/src/enums.hg                 | 66 +++++++++++++++++++++-------------------
 gtk/src/eventcontroller.hg       |  8 ++---
 gtk/src/eventcontrollerfocus.hg  |  6 ++--
 gtk/src/eventcontrollerkey.hg    |  6 ++--
 gtk/src/eventcontrollermotion.hg |  6 ++--
 gtk/src/eventcontrollerscroll.hg |  6 ++--
 gtk/src/expander.hg              |  4 +--
 gtk/src/filechooser.hg           |  8 ++---
 gtk/src/filechooserbutton.hg     |  4 +--
 gtk/src/filechooserdialog.hg     |  4 +--
 gtk/src/filechoosernative.hg     |  6 ++--
 gtk/src/filechooserwidget.hg     |  4 +--
 gtk/src/filefilter.hg            |  6 ++--
 gtk/src/fixed.hg                 |  4 +--
 gtk/src/flowbox.hg               |  4 +--
 gtk/src/flowboxchild.hg          |  4 +--
 gtk/src/fontbutton.hg            |  4 +--
 gtk/src/fontchooser.hg           |  8 +++--
 gtk/src/fontchooserdialog.hg     |  4 +--
 gtk/src/fontchooserwidget.hg     |  4 +--
 gtk/src/frame.hg                 |  4 +--
 gtk/src/gesture.hg               |  8 ++---
 gtk/src/gestureclick.hg          |  4 +--
 gtk/src/gesturedrag.hg           |  4 +--
 gtk/src/gesturelongpress.hg      |  4 +--
 gtk/src/gesturepan.hg            |  6 ++--
 gtk/src/gesturerotate.hg         |  4 +--
 gtk/src/gesturesingle.hg         |  4 +--
 gtk/src/gesturestylus.hg         |  6 ++--
 gtk/src/gestureswipe.hg          |  4 +--
 gtk/src/gesturezoom.hg           |  4 +--
 gtk/src/glarea.hg                |  4 +--
 gtk/src/grid.hg                  |  4 +--
 gtk/src/gridlayout.hg            |  4 +--
 gtk/src/gridlayoutchild.hg       |  4 +--
 gtk/src/headerbar.hg             |  4 +--
 gtk/src/iconpaintable.hg         |  6 ++--
 gtk/src/icontheme.hg             |  8 ++---
 gtk/src/iconview.hg              |  6 ++--
 gtk/src/image.hg                 |  6 ++--
 gtk/src/infobar.hg               |  4 +--
 gtk/src/label.hg                 |  6 ++--
 gtk/src/layoutchild.hg           | 10 +++---
 gtk/src/layoutmanager.hg         |  8 ++---
 gtk/src/levelbar.hg              |  6 ++--
 gtk/src/linkbutton.hg            |  4 +--
 gtk/src/listbox.hg               |  4 +--
 gtk/src/listboxrow.hg            |  4 +--
 gtk/src/liststore.hg             |  4 +--
 gtk/src/lockbutton.hg            |  4 +--
 gtk/src/main.hg                  |  4 ++-
 gtk/src/mediacontrols.hg         |  4 +--
 gtk/src/mediafile.hg             |  8 ++---
 gtk/src/mediastream.hg           |  8 +++--
 gtk/src/menubutton.hg            |  4 +--
 gtk/src/messagedialog.hg         |  6 ++--
 gtk/src/native.hg                | 10 +++---
 gtk/src/nativedialog.hg          |  8 +++--
 gtk/src/noselection.hg           |  4 +--
 gtk/src/notebook.hg              |  4 +--
 gtk/src/notebookpage.hg          |  8 +++--
 gtk/src/orientable.hg            |  4 +--
 gtk/src/overlay.hg               |  4 +--
 gtk/src/padactionentry.hg        |  6 ++--
 gtk/src/padcontroller.hg         |  4 +--
 gtk/src/pagesetup.hg             |  4 +--
 gtk/src/pagesetupunixdialog.hg   |  4 +--
 gtk/src/paned.hg                 |  4 +--
 gtk/src/papersize.hg             | 22 ++++++++------
 gtk/src/passwordentry.hg         |  4 +--
 gtk/src/picture.hg               |  4 +--
 gtk/src/popover.hg               |  6 ++--
 gtk/src/popovermenu.hg           |  6 ++--
 gtk/src/popovermenubar.hg        |  4 +--
 gtk/src/printcontext.hg          |  4 +--
 gtk/src/printer.hg               |  9 +++---
 gtk/src/printjob.hg              |  4 +--
 gtk/src/printoperation.hg        | 16 ++++++----
 gtk/src/printoperationpreview.hg |  4 +--
 gtk/src/printsettings.hg         | 16 +++++-----
 gtk/src/printunixdialog.hg       |  4 +--
 gtk/src/progressbar.hg           |  4 +--
 gtk/src/radiobutton.hg           |  4 +--
 gtk/src/range.hg                 |  6 ++--
 gtk/src/recentinfo.hg            |  8 +++--
 gtk/src/recentmanager.hg         |  6 ++--
 gtk/src/requisition.hg           |  2 ++
 gtk/src/revealer.hg              |  4 +--
 gtk/src/root.hg                  | 12 +++++---
 gtk/src/scale.hg                 |  4 +--
 gtk/src/scalebutton.hg           |  4 +--
 gtk/src/scrollable.hg            |  6 ++--
 gtk/src/scrollbar.hg             |  6 ++--
 gtk/src/scrolledwindow.hg        |  4 +--
 gtk/src/searchbar.hg             |  4 +--
 gtk/src/searchentry.hg           |  4 +--
 gtk/src/selectionmodel.hg        |  6 ++--
 gtk/src/separator.hg             |  4 +--
 gtk/src/settings.hg              |  4 +--
 gtk/src/shortcutcontroller.hg    |  4 +--
 gtk/src/shortcutlabel.hg         |  4 +--
 gtk/src/shortcutmanager.hg       |  8 +++--
 gtk/src/shortcutsgroup.hg        |  4 +--
 gtk/src/shortcutssection.hg      |  4 +--
 gtk/src/shortcutsshortcut.hg     |  6 ++--
 gtk/src/shortcutswindow.hg       |  4 +--
 gtk/src/singleselection.hg       |  4 +--
 gtk/src/sizegroup.hg             |  6 ++--
 gtk/src/snapshot.hg              |  9 +++---
 gtk/src/spinbutton.hg            | 10 +++---
 gtk/src/spinner.hg               |  4 +--
 gtk/src/stack.hg                 |  4 +--
 gtk/src/stackpage.hg             |  8 +++--
 gtk/src/stacksidebar.hg          |  6 ++--
 gtk/src/stackswitcher.hg         |  4 +--
 gtk/src/statusbar.hg             |  4 +--
 gtk/src/stylecontext.hg          |  8 ++---
 gtk/src/styleprovider.hg         |  4 +--
 gtk/src/switch.hg                |  4 +--
 gtk/src/text.hg                  |  4 +--
 gtk/src/textbuffer.hg            |  4 +--
 gtk/src/textchildanchor.hg       |  4 +--
 gtk/src/textiter.hg              | 22 ++++++++------
 gtk/src/textmark.hg              | 11 ++++---
 gtk/src/texttag.hg               |  4 +--
 gtk/src/texttagtable.hg          |  6 ++--
 gtk/src/textview.hg              |  6 ++--
 gtk/src/togglebutton.hg          |  4 +--
 gtk/src/tooltip.hg               |  4 +--
 gtk/src/treedragdest.hg          |  4 +--
 gtk/src/treedragsource.hg        |  4 +--
 gtk/src/treeiter.hg              | 26 ++++++++--------
 gtk/src/treemodel.hg             | 22 +++++++-------
 gtk/src/treemodelfilter.hg       |  4 +--
 gtk/src/treemodelsort.hg         |  4 +--
 gtk/src/treepath.hg              |  4 +--
 gtk/src/treerowreference.hg      |  4 +--
 gtk/src/treeselection.hg         |  6 ++--
 gtk/src/treesortable.hg          |  4 +--
 gtk/src/treestore.hg             |  4 +--
 gtk/src/treeview.hg              | 42 ++++++++++++-------------
 gtk/src/treeviewcolumn.hg        |  4 +--
 gtk/src/video.hg                 |  4 +--
 gtk/src/viewport.hg              |  4 +--
 gtk/src/volumebutton.hg          |  4 +--
 gtk/src/widget.hg                | 28 ++++++++---------
 gtk/src/widgetpaintable.hg       |  4 +--
 gtk/src/window.hg                |  8 ++---
 gtk/src/windowcontrols.hg        |  4 +--
 gtk/src/windowgroup.hg           |  6 ++--
 gtk/src/windowhandle.hg          |  4 +--
 215 files changed, 697 insertions(+), 627 deletions(-)
---
diff --git a/gtk/src/aboutdialog.hg b/gtk/src/aboutdialog.hg
index 46ac9103..dc69140d 100644
--- a/gtk/src/aboutdialog.hg
+++ b/gtk/src/aboutdialog.hg
@@ -29,7 +29,7 @@ _PINCLUDE(gtkmm/private/dialog_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(License, GtkLicense)
+_WRAP_ENUM(License, GtkLicense, decl_prefix GTKMM_API)
 
 /** The AboutDialog offers a simple way to display information about a program like its logo, name, 
copyright,
  * website and license. It is also possible to give credits to the authors, documenters, translators and 
artists
@@ -47,9 +47,9 @@ _WRAP_ENUM(License, GtkLicense)
  *
  * @ingroup Dialogs
  */
-class AboutDialog : public Dialog
+class GTKMM_API AboutDialog : public Dialog
 {
-  _CLASS_GTKOBJECT(AboutDialog, GtkAboutDialog, GTK_ABOUT_DIALOG, Gtk::Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(AboutDialog, GtkAboutDialog, GTK_ABOUT_DIALOG, Gtk::Dialog, GtkDialog, , , GTKMM_API)
   _UNMANAGEABLE
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/accellabel.hg b/gtk/src/accellabel.hg
index 8a513605..0644af74 100644
--- a/gtk/src/accellabel.hg
+++ b/gtk/src/accellabel.hg
@@ -30,9 +30,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class AccelLabel : public Widget
+class GTKMM_API AccelLabel : public Widget
 {
-  _CLASS_GTKOBJECT(AccelLabel, GtkAccelLabel, GTK_ACCEL_LABEL, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(AccelLabel, GtkAccelLabel, GTK_ACCEL_LABEL, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   //The default ctor doesn't correspond to any _new function, but gtkmenuitem.c does a simple g_object_new() 
with no properties.
diff --git a/gtk/src/actionable.hg b/gtk/src/actionable.hg
index ad92f87c..3772660e 100644
--- a/gtk/src/actionable.hg
+++ b/gtk/src/actionable.hg
@@ -15,6 +15,8 @@
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -46,9 +48,9 @@ namespace Gtk
  *
  * @newin{3,4}
  */
-class Actionable : public Glib::Interface
+class GTKMM_API Actionable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Actionable, GtkActionable, GTK_ACTIONABLE, GtkActionableInterface)
+  _CLASS_INTERFACE(Actionable, GtkActionable, GTK_ACTIONABLE, GtkActionableInterface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_action_name() const, gtk_actionable_get_action_name)
diff --git a/gtk/src/actionbar.hg b/gtk/src/actionbar.hg
index 88ae9b93..21041fa8 100644
--- a/gtk/src/actionbar.hg
+++ b/gtk/src/actionbar.hg
@@ -38,10 +38,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,12}
  */
-class ActionBar
+class GTKMM_API ActionBar
   : public Widget
 {
-  _CLASS_GTKOBJECT(ActionBar, GtkActionBar, GTK_ACTION_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ActionBar, GtkActionBar, GTK_ACTION_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Creates a new ActionBar widget.
diff --git a/gtk/src/adjustment.hg b/gtk/src/adjustment.hg
index c21139da..0df94c12 100644
--- a/gtk/src/adjustment.hg
+++ b/gtk/src/adjustment.hg
@@ -16,6 +16,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/object_p.h)
@@ -34,15 +36,15 @@ namespace Gtk
  * The Gtk::Adjustment object does not update the value itself. Instead it
  * is left up to the owner of the Gtk::Adjustment to control the value.
  */
-class Adjustment : public Glib::Object
+class GTKMM_API Adjustment : public Glib::Object
 {
-  _CLASS_GOBJECT(Adjustment,GtkAdjustment,GTK_ADJUSTMENT,Glib::Object,GObject)
+  _CLASS_GOBJECT(Adjustment,GtkAdjustment,GTK_ADJUSTMENT,Glib::Object,GObject, , , GTKMM_API)
   _DERIVES_INITIALLY_UNOWNED()
 public:
 
-  friend class Range;
-  friend class HScrollbar;
-  friend class VScrollbar;
+  friend GTKMM_API class Range;
+  friend GTKMM_API class HScrollbar;
+  friend GTKMM_API class VScrollbar;
 
 protected:
   /** Constructor to create an Adjustment object.
diff --git a/gtk/src/appchooser.hg b/gtk/src/appchooser.hg
index 1d4d15d8..2facfa6c 100644
--- a/gtk/src/appchooser.hg
+++ b/gtk/src/appchooser.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 #include <giomm/appinfo.h>
 //#include <gtkmm/enums.h>
@@ -55,9 +57,9 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class AppChooser : public Glib::Interface
+class GTKMM_API AppChooser : public Glib::Interface
 {
-  _CLASS_INTERFACE(AppChooser, GtkAppChooser, GTK_APP_CHOOSER, GtkAppChooserIface)
+  _CLASS_INTERFACE(AppChooser, GtkAppChooser, GTK_APP_CHOOSER, GtkAppChooserIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Glib::RefPtr<Gio::AppInfo> get_app_info(), gtk_app_chooser_get_app_info, refreturn)
diff --git a/gtk/src/appchooserbutton.hg b/gtk/src/appchooserbutton.hg
index dcc25836..b0bf4805 100644
--- a/gtk/src/appchooserbutton.hg
+++ b/gtk/src/appchooserbutton.hg
@@ -53,11 +53,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class AppChooserButton
+class GTKMM_API AppChooserButton
   : public Widget,
     public AppChooser
 {
-  _CLASS_GTKOBJECT(AppChooserButton, GtkAppChooserButton, GTK_APP_CHOOSER_BUTTON, Widget, GtkWidget)
+  _CLASS_GTKOBJECT(AppChooserButton, GtkAppChooserButton, GTK_APP_CHOOSER_BUTTON, Widget, GtkWidget, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(AppChooser)
 public:
 
diff --git a/gtk/src/appchooserdialog.hg b/gtk/src/appchooserdialog.hg
index 84fc778b..13789892 100644
--- a/gtk/src/appchooserdialog.hg
+++ b/gtk/src/appchooserdialog.hg
@@ -44,11 +44,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class AppChooserDialog
+class GTKMM_API AppChooserDialog
   : public Dialog,
     public AppChooser
 {
-  _CLASS_GTKOBJECT(AppChooserDialog, GtkAppChooserDialog, GTK_APP_CHOOSER_DIALOG, Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(AppChooserDialog, GtkAppChooserDialog, GTK_APP_CHOOSER_DIALOG, Dialog, GtkDialog, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(AppChooser)
   _UNMANAGEABLE
 public:
diff --git a/gtk/src/appchooserwidget.hg b/gtk/src/appchooserwidget.hg
index d3262dbf..f6701bbf 100644
--- a/gtk/src/appchooserwidget.hg
+++ b/gtk/src/appchooserwidget.hg
@@ -40,11 +40,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class AppChooserWidget
+class GTKMM_API AppChooserWidget
   : public Widget,
     public AppChooser
 {
-  _CLASS_GTKOBJECT(AppChooserWidget, GtkAppChooserWidget, GTK_APP_CHOOSER_WIDGET, Widget, GtkWidget)
+  _CLASS_GTKOBJECT(AppChooserWidget, GtkAppChooserWidget, GTK_APP_CHOOSER_WIDGET, Widget, GtkWidget, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(AppChooser)
 public:
 
diff --git a/gtk/src/application.hg b/gtk/src/application.hg
index 6a806099..769e2a64 100644
--- a/gtk/src/application.hg
+++ b/gtk/src/application.hg
@@ -33,7 +33,7 @@ typedef struct _GtkWindow GtkWindow;
 namespace Gtk
 {
 
-class Window;
+class GTKMM_API Window;
 
 //TODO: Add overview documentation discussing the techniques show in the examples in gtkmm-docmentation.
 //TODO: Add the screenshots from the C API?
@@ -82,11 +82,11 @@ class Window;
  *
  * @newin{3,4}
  */
-class Application
+class GTKMM_API Application
   : public Gio::Application
 {
 protected:
-  _CLASS_GOBJECT(Application, GtkApplication, GTK_APPLICATION, Gio::Application, GApplication)
+  _CLASS_GOBJECT(Application, GtkApplication, GTK_APPLICATION, Gio::Application, GApplication, , , GTKMM_API)
 
 protected:
   /** Creates a new Application instance.
@@ -111,7 +111,7 @@ protected:
 
 
 public:
-  _WRAP_ENUM(InhibitFlags, GtkApplicationInhibitFlags)
+  _WRAP_ENUM(InhibitFlags, GtkApplicationInhibitFlags, decl_prefix GTKMM_API)
 
   /** Creates a new Application instance.
    *
diff --git a/gtk/src/applicationwindow.hg b/gtk/src/applicationwindow.hg
index 8e2bdb92..6024827c 100644
--- a/gtk/src/applicationwindow.hg
+++ b/gtk/src/applicationwindow.hg
@@ -26,7 +26,7 @@ _PINCLUDE(gtkmm/private/window_p.h)
 
 namespace Gtk
 {
-class ShortcutsWindow;
+class GTKMM_API ShortcutsWindow;
 
 /** A Gtk::Window subclass with Gtk::Application support.
  *
@@ -68,12 +68,12 @@ class ShortcutsWindow;
  * property. If the desktop environment does not display the application
  * menu, then it will automatically be included in the menubar.
  */
-class ApplicationWindow
+class GTKMM_API ApplicationWindow
 : public Gtk::Window,
   public Gio::ActionGroup,
   public Gio::ActionMap
 {
-  _CLASS_GTKOBJECT(ApplicationWindow, GtkApplicationWindow, GTK_APPLICATION_WINDOW, Gtk::Window, GtkWindow)
+  _CLASS_GTKOBJECT(ApplicationWindow, GtkApplicationWindow, GTK_APPLICATION_WINDOW, Gtk::Window, GtkWindow, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gio::ActionGroup)
   _IMPLEMENTS_INTERFACE(Gio::ActionMap)
   _UNMANAGEABLE
diff --git a/gtk/src/aspectframe.hg b/gtk/src/aspectframe.hg
index 8dd2053e..88d4537e 100644
--- a/gtk/src/aspectframe.hg
+++ b/gtk/src/aspectframe.hg
@@ -33,9 +33,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class AspectFrame : public Widget
+class GTKMM_API AspectFrame : public Widget
 {
-  _CLASS_GTKOBJECT(AspectFrame, GtkAspectFrame, GTK_ASPECT_FRAME, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(AspectFrame, GtkAspectFrame, GTK_ASPECT_FRAME, Gtk::Widget, GtkWidget, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/assistant.hg b/gtk/src/assistant.hg
index 34560d1a..164482a8 100644
--- a/gtk/src/assistant.hg
+++ b/gtk/src/assistant.hg
@@ -40,9 +40,9 @@ namespace Gtk
  * @newin{2,10}
  * @ingroup Dialogs
  */
-class Assistant : public Window
+class GTKMM_API Assistant : public Window
 {
-  _CLASS_GTKOBJECT(Assistant, GtkAssistant, GTK_ASSISTANT, Gtk::Window, GtkWindow)
+  _CLASS_GTKOBJECT(Assistant, GtkAssistant, GTK_ASSISTANT, Gtk::Window, GtkWindow, , , GTKMM_API)
   _UNMANAGEABLE
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/assistantpage.hg b/gtk/src/assistantpage.hg
index 9f4247c0..ba3de373 100644
--- a/gtk/src/assistantpage.hg
+++ b/gtk/src/assistantpage.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/refptr.h>
 
@@ -22,7 +24,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Holds properties of a Gtk::Assistant page.
  *
@@ -31,12 +33,12 @@ class Widget;
  * @see Assistant
  * @newin{3,96}
  */
-class AssistantPage : public Glib::Object
+class GTKMM_API AssistantPage : public Glib::Object
 {
-  _CLASS_GOBJECT(AssistantPage, GtkAssistantPage, GTK_ASSISTANT_PAGE, Glib::Object, GObject)
+  _CLASS_GOBJECT(AssistantPage, GtkAssistantPage, GTK_ASSISTANT_PAGE, Glib::Object, GObject, , , GTKMM_API)
 
 public:
-  _WRAP_ENUM(Type, GtkAssistantPageType)
+  _WRAP_ENUM(Type, GtkAssistantPageType, decl_prefix GTKMM_API)
 
   _WRAP_METHOD(Widget* get_child(), gtk_assistant_page_get_child)
   _WRAP_METHOD(const Widget* get_child() const, gtk_assistant_page_get_child, constversion)
diff --git a/gtk/src/binlayout.hg b/gtk/src/binlayout.hg
index cdf9abf6..89ab7390 100644
--- a/gtk/src/binlayout.hg
+++ b/gtk/src/binlayout.hg
@@ -32,9 +32,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class BinLayout : public LayoutManager
+class GTKMM_API BinLayout : public LayoutManager
 {
-  _CLASS_GOBJECT(BinLayout, GtkBinLayout, GTK_BIN_LAYOUT, LayoutManager, GtkLayoutManager)
+  _CLASS_GOBJECT(BinLayout, GtkBinLayout, GTK_BIN_LAYOUT, LayoutManager, GtkLayoutManager, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 protected:
diff --git a/gtk/src/border.hg b/gtk/src/border.hg
index 1940cb64..3c68f0c3 100644
--- a/gtk/src/border.hg
+++ b/gtk/src/border.hg
@@ -16,6 +16,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 _DEFS(gtkmm,gtk)
 
 #include <glibmm/value.h>
@@ -25,9 +27,9 @@ namespace Gtk
 
 /** This specifies a border around a rectangular area that can be of a different width on each side.
  */
-class Border
+class GTKMM_API Border
 {
-  _CLASS_BOXEDTYPE(Border, GtkBorder, gtk_border_new, gtk_border_copy, gtk_border_free)
+  _CLASS_BOXEDTYPE(Border, GtkBorder, gtk_border_new, gtk_border_copy, gtk_border_free, GTKMM_API)
 public:
 
   /** Get the width of the left border.
diff --git a/gtk/src/box.hg b/gtk/src/box.hg
index c7aac0d4..a21a917d 100644
--- a/gtk/src/box.hg
+++ b/gtk/src/box.hg
@@ -46,11 +46,11 @@ namespace Gtk
  * Use reorder_child_after() and reorder_child_at_start() to move a child to
  * a different place in the box.
  */
-class Box
+class GTKMM_API Box
   : public Widget,
     public Orientable
 {
-  _CLASS_GTKOBJECT(Box, GtkBox, GTK_BOX, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Box, GtkBox, GTK_BOX, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
 
diff --git a/gtk/src/boxlayout.hg b/gtk/src/boxlayout.hg
index 637d9a34..cde5ada7 100644
--- a/gtk/src/boxlayout.hg
+++ b/gtk/src/boxlayout.hg
@@ -40,9 +40,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class BoxLayout : public LayoutManager, public Orientable
+class GTKMM_API BoxLayout : public LayoutManager, public Orientable
 {
-  _CLASS_GOBJECT(BoxLayout, GtkBoxLayout, GTK_BOX_LAYOUT, LayoutManager, GtkLayoutManager)
+  _CLASS_GOBJECT(BoxLayout, GtkBoxLayout, GTK_BOX_LAYOUT, LayoutManager, GtkLayoutManager, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gtk/src/buildable.hg b/gtk/src/buildable.hg
index 81f1d2f1..52ab31df 100644
--- a/gtk/src/buildable.hg
+++ b/gtk/src/buildable.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/interface_p.h)
@@ -40,9 +42,9 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class Buildable : public Glib::Interface
+class GTKMM_API Buildable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Buildable, GtkBuildable, GTK_BUILDABLE, GtkBuildableIface)
+  _CLASS_INTERFACE(Buildable, GtkBuildable, GTK_BUILDABLE, GtkBuildableIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void set_name(const Glib::ustring& name), gtk_buildable_set_name)
diff --git a/gtk/src/builder.hg b/gtk/src/builder.hg
index 3b86d74c..58ab8423 100644
--- a/gtk/src/builder.hg
+++ b/gtk/src/builder.hg
@@ -27,11 +27,11 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class Application;
+class GTKMM_API Application;
 
 /** Exception class for Gdk::Builder errors.
  */
-_WRAP_GERROR(BuilderError,GtkBuilderError,GTK_BUILDER_ERROR)
+_WRAP_GERROR(BuilderError,GtkBuilderError,GTK_BUILDER_ERROR, decl_prefix GTKMM_API)
 
 /** Build an interface from an XML UI definition description.
  *
@@ -73,9 +73,9 @@ _WRAP_GERROR(BuilderError,GtkBuilderError,GTK_BUILDER_ERROR)
  *
  * @newin{2,12}
  */
-class Builder : public Glib::Object
+class GTKMM_API Builder : public Glib::Object
 {
-  _CLASS_GOBJECT(Builder, GtkBuilder, GTK_BUILDER, Glib::Object, GObject)
+  _CLASS_GOBJECT(Builder, GtkBuilder, GTK_BUILDER, Glib::Object, GObject, , , GTKMM_API)
 
 protected:
  _CTOR_DEFAULT
diff --git a/gtk/src/button.hg b/gtk/src/button.hg
index 387cadd6..678b5592 100644
--- a/gtk/src/button.hg
+++ b/gtk/src/button.hg
@@ -35,11 +35,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Button
+class GTKMM_API Button
   : public Widget,
     public Actionable
 {
-  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Actionable)
 public:
 
diff --git a/gtk/src/calendar.hg b/gtk/src/calendar.hg
index 33eda1dc..79542436 100644
--- a/gtk/src/calendar.hg
+++ b/gtk/src/calendar.hg
@@ -50,9 +50,9 @@ _CC_INCLUDE(gtk/gtk.h)
  *
  * @ingroup Widgets
  */
-class Calendar : public Widget
+class GTKMM_API Calendar : public Widget
 {
-  _CLASS_GTKOBJECT(Calendar, GtkCalendar, GTK_CALENDAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Calendar, GtkCalendar, GTK_CALENDAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/cellarea.hg b/gtk/src/cellarea.hg
index 9caa48b5..2ee0de8a 100644
--- a/gtk/src/cellarea.hg
+++ b/gtk/src/cellarea.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/object_p.h)
 
 namespace Gtk
 {
-class Snapshot;
+class GTKMM_API Snapshot;
 
 //TODO: This documentation omits the examples from the C documentation. We should translate them to C++.
 /** An abstract base class for laying out CellRenderers.
@@ -92,12 +92,12 @@ class Snapshot;
  *
  * @newin{3,0}
  */
-class CellArea
+class GTKMM_API CellArea
   : public Glib::Object,
     public Buildable,
     public CellLayout
 {
-  _CLASS_GOBJECT(CellArea, GtkCellArea, GTK_CELL_AREA, Glib::Object, GObject)
+  _CLASS_GOBJECT(CellArea, GtkCellArea, GTK_CELL_AREA, Glib::Object, GObject, , , GTKMM_API)
   _DERIVES_INITIALLY_UNOWNED()
   _IMPLEMENTS_INTERFACE(Buildable)
   _IMPLEMENTS_INTERFACE(CellLayout)
diff --git a/gtk/src/cellareabox.hg b/gtk/src/cellareabox.hg
index 3d05afb9..b6120a71 100644
--- a/gtk/src/cellareabox.hg
+++ b/gtk/src/cellareabox.hg
@@ -43,11 +43,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class CellAreaBox
+class GTKMM_API CellAreaBox
   : public Gtk::CellArea,
     public Orientable
 {
-  _CLASS_GOBJECT(CellAreaBox, GtkCellAreaBox, GTK_CELL_AREA_BOX, CellArea, GtkCellArea)
+  _CLASS_GOBJECT(CellAreaBox, GtkCellAreaBox, GTK_CELL_AREA_BOX, CellArea, GtkCellArea, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 protected:
diff --git a/gtk/src/cellareacontext.hg b/gtk/src/cellareacontext.hg
index b44b6d75..af028f8e 100644
--- a/gtk/src/cellareacontext.hg
+++ b/gtk/src/cellareacontext.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/object_p.h)
@@ -23,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class CellArea;
+class GTKMM_API CellArea;
 
 /** This stores geometrical information for a series of rows in a CellArea.
  *
@@ -40,9 +42,9 @@ class CellArea;
  * row also be used for the same row when calling other CellArea APIs
  * such as gtk_cell_area_render() and gtk_cell_area_event().
  */
-class CellAreaContext : public Glib::Object
+class GTKMM_API CellAreaContext : public Glib::Object
 {
-  _CLASS_GOBJECT(CellAreaContext, GtkCellAreaContext, GTK_CELL_AREA_CONTEXT, Glib::Object, GObject)
+  _CLASS_GOBJECT(CellAreaContext, GtkCellAreaContext, GTK_CELL_AREA_CONTEXT, Glib::Object, GObject, , , 
GTKMM_API)
 public:
 
 
diff --git a/gtk/src/celleditable.hg b/gtk/src/celleditable.hg
index f0163c81..a9e3154c 100644
--- a/gtk/src/celleditable.hg
+++ b/gtk/src/celleditable.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 #include <gdkmm/event.h>
 
@@ -35,9 +37,9 @@ namespace Gtk
 /** Interface for widgets which are used for editing cells.
  * The CellEditable interface must be implemented for widgets to be usable when editing the contents of a 
TreeView cell.
  */
-class CellEditable : public Glib::Interface
+class GTKMM_API CellEditable : public Glib::Interface
 {
-  _CLASS_INTERFACE(CellEditable,GtkCellEditable,GTK_CELL_EDITABLE,GtkCellEditableIface)
+  _CLASS_INTERFACE(CellEditable,GtkCellEditable,GTK_CELL_EDITABLE,GtkCellEditableIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void start_editing(const Glib::RefPtr<const Gdk::Event>& event), 
gtk_cell_editable_start_editing)
diff --git a/gtk/src/celllayout.hg b/gtk/src/celllayout.hg
index 838ee8d8..43e795f2 100644
--- a/gtk/src/celllayout.hg
+++ b/gtk/src/celllayout.hg
@@ -36,7 +36,7 @@ typedef struct _GtkCellLayoutIface GtkCellLayoutIface;
 namespace Gtk
 {
 
-class CellArea;
+class GTKMM_API CellArea;
 
 /** An interface for packing cells.
  * CellLayout is an interface to be implemented by all objects which want to provide a TreeView::Column-like 
API
@@ -44,7 +44,7 @@ class CellArea;
  */
 class GTKMM_API CellLayout : public Glib::Interface
 {
-  _CLASS_INTERFACE(CellLayout, GtkCellLayout, GTK_CELL_LAYOUT, GtkCellLayoutIface)
+  _CLASS_INTERFACE(CellLayout, GtkCellLayout, GTK_CELL_LAYOUT, GtkCellLayoutIface, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/cellrenderer.hg b/gtk/src/cellrenderer.hg
index c3e16a5e..950ae4e9 100644
--- a/gtk/src/cellrenderer.hg
+++ b/gtk/src/cellrenderer.hg
@@ -26,10 +26,10 @@ _PH_INCLUDE(gtk/gtk.h)
 
 namespace Gtk
 {
-class Snapshot;
+class GTKMM_API Snapshot;
 
-_WRAP_ENUM(CellRendererState, GtkCellRendererState)
-_WRAP_ENUM(CellRendererMode, GtkCellRendererMode)
+_WRAP_ENUM(CellRendererState, GtkCellRendererState, decl_prefix GTKMM_API)
+_WRAP_ENUM(CellRendererMode, GtkCellRendererMode, decl_prefix GTKMM_API)
 
 /** CellRenderers are used by Gtk::TreeView columns to render the Gtk::TreeModel column data appropriately.
  * They display, and allow editing of, the values of their properties.
@@ -38,10 +38,10 @@ _WRAP_ENUM(CellRendererMode, GtkCellRendererMode)
  *
  * @ingroup TreeView
  */
-class CellRenderer :
+class GTKMM_API CellRenderer :
   public Object
 {
-  _CLASS_GTKOBJECT(CellRenderer,GtkCellRenderer,GTK_CELL_RENDERER,Gtk::Object,GObject)
+  _CLASS_GTKOBJECT(CellRenderer,GtkCellRenderer,GTK_CELL_RENDERER,Gtk::Object,GObject, , , GTKMM_API)
 public:
 
   _WRAP_METHOD(SizeRequestMode get_request_mode() const, gtk_cell_renderer_get_request_mode)
diff --git a/gtk/src/cellrendereraccel.hg b/gtk/src/cellrendereraccel.hg
index b1f4e030..78e561bf 100644
--- a/gtk/src/cellrendereraccel.hg
+++ b/gtk/src/cellrendereraccel.hg
@@ -37,12 +37,12 @@ namespace Gtk
  * @ingroup TreeView
  * @newin{2,10}
  */
-class CellRendererAccel : public CellRendererText
+class GTKMM_API CellRendererAccel : public CellRendererText
 {
-  _CLASS_GTKOBJECT(CellRendererAccel, GtkCellRendererAccel, GTK_CELL_RENDERER_ACCEL, Gtk::CellRendererText, 
GtkCellRendererText)
+  _CLASS_GTKOBJECT(CellRendererAccel, GtkCellRendererAccel, GTK_CELL_RENDERER_ACCEL, Gtk::CellRendererText, 
GtkCellRendererText, , , GTKMM_API)
 public:
 
-  _WRAP_ENUM(Mode, GtkCellRendererAccelMode)
+  _WRAP_ENUM(Mode, GtkCellRendererAccelMode, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT
 
diff --git a/gtk/src/cellrenderercombo.hg b/gtk/src/cellrenderercombo.hg
index ec323ff4..d31f8840 100644
--- a/gtk/src/cellrenderercombo.hg
+++ b/gtk/src/cellrenderercombo.hg
@@ -37,9 +37,9 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class CellRendererCombo : public CellRendererText
+class GTKMM_API CellRendererCombo : public CellRendererText
 {
-  _CLASS_GTKOBJECT(CellRendererCombo, GtkCellRendererCombo, GTK_CELL_RENDERER_COMBO, Gtk::CellRendererText, 
GtkCellRendererText)
+  _CLASS_GTKOBJECT(CellRendererCombo, GtkCellRendererCombo, GTK_CELL_RENDERER_COMBO, Gtk::CellRendererText, 
GtkCellRendererText, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/cellrendererpixbuf.hg b/gtk/src/cellrendererpixbuf.hg
index f328e053..72fd887b 100644
--- a/gtk/src/cellrendererpixbuf.hg
+++ b/gtk/src/cellrendererpixbuf.hg
@@ -38,9 +38,9 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class CellRendererPixbuf : public CellRenderer
+class GTKMM_API CellRendererPixbuf : public CellRenderer
 {
-  
_CLASS_GTKOBJECT(CellRendererPixbuf,GtkCellRendererPixbuf,GTK_CELL_RENDERER_PIXBUF,Gtk::CellRenderer,GtkCellRenderer)
+  
_CLASS_GTKOBJECT(CellRendererPixbuf,GtkCellRendererPixbuf,GTK_CELL_RENDERER_PIXBUF,Gtk::CellRenderer,GtkCellRenderer,
 , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/cellrendererprogress.hg b/gtk/src/cellrendererprogress.hg
index 429b5600..d7ccd13d 100644
--- a/gtk/src/cellrendererprogress.hg
+++ b/gtk/src/cellrendererprogress.hg
@@ -29,11 +29,11 @@ namespace Gtk
  * @ingroup TreeView
  * @newin{2,6}
  */
-class CellRendererProgress
+class GTKMM_API CellRendererProgress
  : public CellRenderer,
    public Orientable
 {
-  _CLASS_GTKOBJECT(CellRendererProgress, GtkCellRendererProgress, GTK_CELL_RENDERER_PROGRESS, 
Gtk::CellRenderer, GtkCellRenderer)
+  _CLASS_GTKOBJECT(CellRendererProgress, GtkCellRendererProgress, GTK_CELL_RENDERER_PROGRESS, 
Gtk::CellRenderer, GtkCellRenderer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/cellrendererspin.hg b/gtk/src/cellrendererspin.hg
index 922645d8..8884cf4d 100644
--- a/gtk/src/cellrendererspin.hg
+++ b/gtk/src/cellrendererspin.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/cellrenderertext_p.h)
 
 namespace Gtk
 {
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /**  Renders a spin button in a cell.
  *
@@ -42,9 +42,9 @@ class Adjustment;
  * @ingroup TreeView
  * @newin{2,12}
  */
-class CellRendererSpin : public CellRendererText
+class GTKMM_API CellRendererSpin : public CellRendererText
 {
-  _CLASS_GTKOBJECT(CellRendererSpin, GtkCellRendererSpin, GTK_CELL_RENDERER_SPIN, Gtk::CellRendererText, 
GtkCellRendererText)
+  _CLASS_GTKOBJECT(CellRendererSpin, GtkCellRendererSpin, GTK_CELL_RENDERER_SPIN, Gtk::CellRendererText, 
GtkCellRendererText, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/cellrendererspinner.hg b/gtk/src/cellrendererspinner.hg
index 80f5b808..2da5df35 100644
--- a/gtk/src/cellrendererspinner.hg
+++ b/gtk/src/cellrendererspinner.hg
@@ -36,9 +36,9 @@ _CC_INCLUDE(gtk/gtk.h)
  *
  * @ingroup TreeView
  */
-class CellRendererSpinner : public CellRenderer
+class GTKMM_API CellRendererSpinner : public CellRenderer
 {
-  
_CLASS_GTKOBJECT(CellRendererSpinner,GtkCellRendererSpinner,GTK_CELL_RENDERER_SPINNER,Gtk::CellRenderer,GtkCellRenderer)
+  
_CLASS_GTKOBJECT(CellRendererSpinner,GtkCellRendererSpinner,GTK_CELL_RENDERER_SPINNER,Gtk::CellRenderer,GtkCellRenderer,
 , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/cellrenderertext.hg b/gtk/src/cellrenderertext.hg
index 356bc957..cf9b22f2 100644
--- a/gtk/src/cellrenderertext.hg
+++ b/gtk/src/cellrenderertext.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <gtkmm/cellrenderer.h>
 #include <pangomm/attrlist.h>
 #include <pangomm/fontdescription.h>
@@ -29,9 +31,9 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class CellRendererText : public CellRenderer
+class GTKMM_API CellRendererText : public CellRenderer
 {
-  
_CLASS_GTKOBJECT(CellRendererText,GtkCellRendererText,GTK_CELL_RENDERER_TEXT,Gtk::CellRenderer,GtkCellRenderer)
+  
_CLASS_GTKOBJECT(CellRendererText,GtkCellRendererText,GTK_CELL_RENDERER_TEXT,Gtk::CellRenderer,GtkCellRenderer,
 , , GTKMM_API)
 public:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/cellrenderertoggle.hg b/gtk/src/cellrenderertoggle.hg
index 7d77dde3..04f6059b 100644
--- a/gtk/src/cellrenderertoggle.hg
+++ b/gtk/src/cellrenderertoggle.hg
@@ -30,9 +30,9 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class CellRendererToggle : public CellRenderer
+class GTKMM_API CellRendererToggle : public CellRenderer
 {
-  
_CLASS_GTKOBJECT(CellRendererToggle,GtkCellRendererToggle,GTK_CELL_RENDERER_TOGGLE,Gtk::CellRenderer,GtkCellRenderer)
+  
_CLASS_GTKOBJECT(CellRendererToggle,GtkCellRendererToggle,GTK_CELL_RENDERER_TOGGLE,Gtk::CellRenderer,GtkCellRenderer,
 , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/cellview.hg b/gtk/src/cellview.hg
index f82bb4eb..1041c977 100644
--- a/gtk/src/cellview.hg
+++ b/gtk/src/cellview.hg
@@ -40,12 +40,12 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class CellView :
+class GTKMM_API CellView :
   public Widget,
   public CellLayout,
   public Orientable
 {
-  _CLASS_GTKOBJECT(CellView, GtkCellView, GTK_CELL_VIEW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(CellView, GtkCellView, GTK_CELL_VIEW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(Orientable)
 
diff --git a/gtk/src/centerbox.hg b/gtk/src/centerbox.hg
index 5a1d4cd9..9d6c0fa2 100644
--- a/gtk/src/centerbox.hg
+++ b/gtk/src/centerbox.hg
@@ -46,9 +46,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class CenterBox : public Widget, public Orientable
+class GTKMM_API CenterBox : public Widget, public Orientable
 {
-  _CLASS_GTKOBJECT(CenterBox, GtkCenterBox, GTK_CENTER_BOX, Widget, GtkWidget)
+  _CLASS_GTKOBJECT(CenterBox, GtkCenterBox, GTK_CENTER_BOX, Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/centerlayout.hg b/gtk/src/centerlayout.hg
index 7f8e7956..8dcf09a2 100644
--- a/gtk/src/centerlayout.hg
+++ b/gtk/src/centerlayout.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/layoutmanager_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** A centering layout.
  *
@@ -34,9 +34,9 @@ class Widget;
  *
  * @newin{3,96}
  */
-class CenterLayout : public LayoutManager
+class GTKMM_API CenterLayout : public LayoutManager
 {
-  _CLASS_GOBJECT(CenterLayout, GtkCenterLayout, GTK_CENTER_LAYOUT, LayoutManager, GtkLayoutManager)
+  _CLASS_GOBJECT(CenterLayout, GtkCenterLayout, GTK_CENTER_LAYOUT, LayoutManager, GtkLayoutManager, , , 
GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 protected:
diff --git a/gtk/src/checkbutton.hg b/gtk/src/checkbutton.hg
index f67789f5..020e139a 100644
--- a/gtk/src/checkbutton.hg
+++ b/gtk/src/checkbutton.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class CheckButton : public ToggleButton
+class GTKMM_API CheckButton : public ToggleButton
 {
-  _CLASS_GTKOBJECT(CheckButton,GtkCheckButton,GTK_CHECK_BUTTON,Gtk::ToggleButton,GtkToggleButton)
+  _CLASS_GTKOBJECT(CheckButton,GtkCheckButton,GTK_CHECK_BUTTON,Gtk::ToggleButton,GtkToggleButton,,,GTKMM_API)
 public:
 
   /** Create an empty check button.
diff --git a/gtk/src/colorbutton.hg b/gtk/src/colorbutton.hg
index b4993b68..ef660bb5 100644
--- a/gtk/src/colorbutton.hg
+++ b/gtk/src/colorbutton.hg
@@ -36,11 +36,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ColorButton
+class GTKMM_API ColorButton
 : public Widget,
   public ColorChooser
 {
-  _CLASS_GTKOBJECT(ColorButton, GtkColorButton, GTK_COLOR_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ColorButton, GtkColorButton, GTK_COLOR_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(ColorChooser)
 public:
 
diff --git a/gtk/src/colorchooser.hg b/gtk/src/colorchooser.hg
index c980b347..e2d8bd3b 100644
--- a/gtk/src/colorchooser.hg
+++ b/gtk/src/colorchooser.hg
@@ -40,9 +40,9 @@ namespace Gtk
  *
  * @newin{3,4}
  */
-class ColorChooser : public Glib::Interface
+class GTKMM_API ColorChooser : public Glib::Interface
 {
-  _CLASS_INTERFACE(ColorChooser, GtkColorChooser, GTK_COLOR_CHOOSER, GtkColorChooserInterface)
+  _CLASS_INTERFACE(ColorChooser, GtkColorChooser, GTK_COLOR_CHOOSER, GtkColorChooserInterface, , , GTKMM_API)
 
 public:
   /** Gets the currently selected color.
diff --git a/gtk/src/colorchooserdialog.hg b/gtk/src/colorchooserdialog.hg
index 08944113..78f1c4f1 100644
--- a/gtk/src/colorchooserdialog.hg
+++ b/gtk/src/colorchooserdialog.hg
@@ -31,11 +31,11 @@ namespace Gtk
  *
  * @ingroup Dialogs
  */
-class ColorChooserDialog
+class GTKMM_API ColorChooserDialog
 : public Dialog,
   public ColorChooser
 {
-  _CLASS_GTKOBJECT(ColorChooserDialog, GtkColorChooserDialog, GTK_COLOR_CHOOSER_DIALOG, Gtk::Dialog, 
GtkDialog)
+  _CLASS_GTKOBJECT(ColorChooserDialog, GtkColorChooserDialog, GTK_COLOR_CHOOSER_DIALOG, Gtk::Dialog, 
GtkDialog, , , GTKMM_API)
   _UNMANAGEABLE()
 public:
 
diff --git a/gtk/src/combobox.hg b/gtk/src/combobox.hg
index 1c1943ba..63b7f596 100644
--- a/gtk/src/combobox.hg
+++ b/gtk/src/combobox.hg
@@ -29,7 +29,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 
 namespace Gdk
 {
-class Device;
+class GTKMM_API Device;
 }
 
 namespace Gtk
@@ -63,12 +63,12 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ComboBox
+class GTKMM_API ComboBox
 : public Widget,
   public CellLayout,
   public CellEditable
 {
-  _CLASS_GTKOBJECT(ComboBox, GtkComboBox, GTK_COMBO_BOX, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ComboBox, GtkComboBox, GTK_COMBO_BOX, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(CellEditable)
 public:
diff --git a/gtk/src/comboboxtext.hg b/gtk/src/comboboxtext.hg
index 2946a2e4..e1997260 100644
--- a/gtk/src/comboboxtext.hg
+++ b/gtk/src/comboboxtext.hg
@@ -35,10 +35,10 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ComboBoxText
+class GTKMM_API ComboBoxText
 : public ComboBox
 {
-  _CLASS_GTKOBJECT(ComboBoxText, GtkComboBoxText, GTK_COMBO_BOX_TEXT, ComboBox, GtkComboBox)
+  _CLASS_GTKOBJECT(ComboBoxText, GtkComboBoxText, GTK_COMBO_BOX_TEXT, ComboBox, GtkComboBox, , , GTKMM_API)
 public:
 
   /** Creates a new empty ComboBoxText, optionally with an entry.
diff --git a/gtk/src/constraint.hg b/gtk/src/constraint.hg
index a61c7c42..2b30e2b2 100644
--- a/gtk/src/constraint.hg
+++ b/gtk/src/constraint.hg
@@ -38,15 +38,15 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class Constraint : public Glib::Object
+class GTKMM_API Constraint : public Glib::Object
 {
-  _CLASS_GOBJECT(Constraint, GtkConstraint, GTK_CONSTRAINT, Glib::Object, GObject)
+  _CLASS_GOBJECT(Constraint, GtkConstraint, GTK_CONSTRAINT, Glib::Object, GObject, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:
-  _WRAP_ENUM(Attribute, GtkConstraintAttribute)
-  _WRAP_ENUM(Relation, GtkConstraintRelation)
-  _WRAP_ENUM(Strength, GtkConstraintStrength, CONV_TO_INT)
+  _WRAP_ENUM(Attribute, GtkConstraintAttribute, decl_prefix GTKMM_API)
+  _WRAP_ENUM(Relation, GtkConstraintRelation, decl_prefix GTKMM_API)
+  _WRAP_ENUM(Strength, GtkConstraintStrength, CONV_TO_INT, decl_prefix GTKMM_API)
 
 protected:
   _WRAP_CTOR(Constraint(const Glib::RefPtr<ConstraintTarget>& target,
diff --git a/gtk/src/constraintguide.hg b/gtk/src/constraintguide.hg
index f84dd04f..65a7c3e8 100644
--- a/gtk/src/constraintguide.hg
+++ b/gtk/src/constraintguide.hg
@@ -36,9 +36,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class ConstraintGuide : public Glib::Object, public ConstraintTarget
+class GTKMM_API ConstraintGuide : public Glib::Object, public ConstraintTarget
 {
-  _CLASS_GOBJECT(ConstraintGuide, GtkConstraintGuide, GTK_CONSTRAINT_GUIDE, Glib::Object, GObject)
+  _CLASS_GOBJECT(ConstraintGuide, GtkConstraintGuide, GTK_CONSTRAINT_GUIDE, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(ConstraintTarget)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gtk/src/constraintlayout.hg b/gtk/src/constraintlayout.hg
index b5fda18e..19118358 100644
--- a/gtk/src/constraintlayout.hg
+++ b/gtk/src/constraintlayout.hg
@@ -27,7 +27,7 @@ _PINCLUDE(gtkmm/private/layoutmanager_p.h)
 
 namespace Gtk
 {
-_WRAP_GERROR(ConstraintVflParserError, GtkConstraintVflParserError, GTK_CONSTRAINT_VFL_PARSER_ERROR)
+_WRAP_GERROR(ConstraintVflParserError, GtkConstraintVflParserError, GTK_CONSTRAINT_VFL_PARSER_ERROR, 
decl_prefix GTKMM_API)
 
 /** A layout manager using constraints.
  *
@@ -40,9 +40,9 @@ _WRAP_GERROR(ConstraintVflParserError, GtkConstraintVflParserError, GTK_CONSTRAI
  *
  * @newin{3,96}
  */
-class ConstraintLayout : public LayoutManager, public Buildable
+class GTKMM_API ConstraintLayout : public LayoutManager, public Buildable
 {
-  _CLASS_GOBJECT(ConstraintLayout, GtkConstraintLayout, GTK_CONSTRAINT_LAYOUT, LayoutManager, 
GtkLayoutManager)
+  _CLASS_GOBJECT(ConstraintLayout, GtkConstraintLayout, GTK_CONSTRAINT_LAYOUT, LayoutManager, 
GtkLayoutManager, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gtk/src/constrainttarget.hg b/gtk/src/constrainttarget.hg
index 9f771534..9b0220e7 100644
--- a/gtk/src/constrainttarget.hg
+++ b/gtk/src/constrainttarget.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -36,9 +38,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class ConstraintTarget : public Glib::Interface
+class GTKMM_API ConstraintTarget : public Glib::Interface
 {
-  _CLASS_INTERFACE(ConstraintTarget, GtkConstraintTarget, GTK_CONSTRAINT_TARGET, 
GtkConstraintTargetInterface)
+  _CLASS_INTERFACE(ConstraintTarget, GtkConstraintTarget, GTK_CONSTRAINT_TARGET, 
GtkConstraintTargetInterface, , , GTKMM_API)
 
 public:
   // Nothing!
diff --git a/gtk/src/csslocation.hg b/gtk/src/csslocation.hg
index 9635ef68..16dfe600 100644
--- a/gtk/src/csslocation.hg
+++ b/gtk/src/csslocation.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <gtk/gtk.h>
 #include <cstddef> // std::size_t
 
@@ -35,7 +37,7 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class CssLocation
+class GTKMM_API CssLocation
 {
   _CLASS_GENERIC(CssLocation, GtkCssLocation)
 public:
@@ -91,6 +93,7 @@ namespace Glib
    *
    * @relates Gtk::CssLocation
    */
+GTKMM_API
 Gtk::CssLocation wrap(const GtkCssLocation* object);
 
 } // namespace Glib
diff --git a/gtk/src/cssprovider.hg b/gtk/src/cssprovider.hg
index cbad3904..c04aee5e 100644
--- a/gtk/src/cssprovider.hg
+++ b/gtk/src/cssprovider.hg
@@ -26,8 +26,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-_WRAP_GERROR(CssParserError, GtkCssParserError, GTK_CSS_PARSER_ERROR, newin "3,96")
-_WRAP_GERROR(CssParserWarning, GtkCssParserWarning, GTK_CSS_PARSER_WARNING, newin "3,96")
+_WRAP_GERROR(CssParserError, GtkCssParserError, GTK_CSS_PARSER_ERROR, newin "3,96", decl_prefix GTKMM_API)
+_WRAP_GERROR(CssParserWarning, GtkCssParserWarning, GTK_CSS_PARSER_WARNING, newin "3,96", decl_prefix 
GTKMM_API)
 
 /** CSS-like styling for widgets, implementing the StyleProvider base class.
  *
@@ -42,11 +42,11 @@ _WRAP_GERROR(CssParserWarning, GtkCssParserWarning, GTK_CSS_PARSER_WARNING, newi
  *
  * @newin{3,0}
  */
-class CssProvider
+class GTKMM_API CssProvider
   : public Glib::Object,
     public StyleProvider
 {
-  _CLASS_GOBJECT(CssProvider, GtkCssProvider, GTK_CSS_PROVIDER, Glib::Object, GObject)
+  _CLASS_GOBJECT(CssProvider, GtkCssProvider, GTK_CSS_PROVIDER, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(StyleProvider)
 protected:
   _CTOR_DEFAULT()
diff --git a/gtk/src/csssection.hg b/gtk/src/csssection.hg
index e917afa2..be6e1df1 100644
--- a/gtk/src/csssection.hg
+++ b/gtk/src/csssection.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @newin{3,16}
  */
-class CssSection final
+class GTKMM_API CssSection final
 {
-  _CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)
+  _CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref, 
GTKMM_API)
   _IGNORE(gtk_css_section_ref, gtk_css_section_unref)
 
 public:
diff --git a/gtk/src/dialog.hg b/gtk/src/dialog.hg
index 9c96ce97..f1dd19b6 100644
--- a/gtk/src/dialog.hg
+++ b/gtk/src/dialog.hg
@@ -33,7 +33,7 @@ namespace Gtk
  */
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)
+_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT, decl_prefix GTKMM_API)
 
 /** Create popup windows.
  *
@@ -59,9 +59,9 @@ _WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)
  *
  * @ingroup Dialogs
  */
-class Dialog : public Window
+class GTKMM_API Dialog : public Window
 {
-  _CLASS_GTKOBJECT(Dialog,GtkDialog,GTK_DIALOG,Gtk::Window,GtkWindow)
+  _CLASS_GTKOBJECT(Dialog,GtkDialog,GTK_DIALOG,Gtk::Window,GtkWindow,,,GTKMM_API)
   _UNMANAGEABLE
   _IGNORE(gtk_dialog_add_buttons)
 public:
diff --git a/gtk/src/dragicon.hg b/gtk/src/dragicon.hg
index 82e92c06..d53aa22d 100644
--- a/gtk/src/dragicon.hg
+++ b/gtk/src/dragicon.hg
@@ -44,9 +44,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,98}
  */
-class DragIcon : public Widget, public Native, public Root
+class GTKMM_API DragIcon : public Widget, public Native, public Root
 {
-  _CLASS_GTKOBJECT(DragIcon, GtkDragIcon, GTK_DRAG_ICON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(DragIcon, GtkDragIcon, GTK_DRAG_ICON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Native)
   _IMPLEMENTS_INTERFACE(Root)
   _STRUCT_NOT_HIDDEN
diff --git a/gtk/src/dragsource.hg b/gtk/src/dragsource.hg
index 0b93ab9b..dcd6ff6f 100644
--- a/gtk/src/dragsource.hg
+++ b/gtk/src/dragsource.hg
@@ -57,9 +57,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class DragSource : public GestureSingle
+class GTKMM_API DragSource : public GestureSingle
 {
-  _CLASS_GOBJECT(DragSource, GtkDragSource, GTK_DRAG_SOURCE, GestureSingle, GtkGestureSingle)
+  _CLASS_GOBJECT(DragSource, GtkDragSource, GTK_DRAG_SOURCE, GestureSingle, GtkGestureSingle, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/drawingarea.hg b/gtk/src/drawingarea.hg
index 355b15f0..cd56d2e4 100644
--- a/gtk/src/drawingarea.hg
+++ b/gtk/src/drawingarea.hg
@@ -100,9 +100,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class DrawingArea : public Widget
+class GTKMM_API DrawingArea : public Widget
 {
-  _CLASS_GTKOBJECT(DrawingArea,GtkDrawingArea,GTK_DRAWING_AREA,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(DrawingArea,GtkDrawingArea,GTK_DRAWING_AREA,Gtk::Widget,GtkWidget,,,GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/dropcontrollermotion.hg b/gtk/src/dropcontrollermotion.hg
index ecdb4d38..f5607cd6 100644
--- a/gtk/src/dropcontrollermotion.hg
+++ b/gtk/src/dropcontrollermotion.hg
@@ -38,9 +38,9 @@ namespace Gtk
  * @see Gdk::Drop, Gtk::DropTarget
  * @ingroup Gestures
  */
-class DropControllerMotion : public EventController
+class GTKMM_API DropControllerMotion : public EventController
 {
-  _CLASS_GOBJECT(DropControllerMotion, GtkDropControllerMotion, GTK_DROP_CONTROLLER_MOTION, EventController, 
GtkEventController)
+  _CLASS_GOBJECT(DropControllerMotion, GtkDropControllerMotion, GTK_DROP_CONTROLLER_MOTION, EventController, 
GtkEventController, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/droptarget.hg b/gtk/src/droptarget.hg
index 59caeaa0..080ca632 100644
--- a/gtk/src/droptarget.hg
+++ b/gtk/src/droptarget.hg
@@ -56,9 +56,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class DropTarget : public EventController
+class GTKMM_API DropTarget : public EventController
 {
-  _CLASS_GOBJECT(DropTarget, GtkDropTarget, GTK_DROP_TARGET, EventController, GtkEventController)
+  _CLASS_GOBJECT(DropTarget, GtkDropTarget, GTK_DROP_TARGET, EventController, GtkEventController, , , 
GTKMM_API)
 
 public:
   // gtk_drop_target_new() does more than call g_object_new().
diff --git a/gtk/src/droptargetasync.hg b/gtk/src/droptargetasync.hg
index efe1d82c..5a2fd0b4 100644
--- a/gtk/src/droptargetasync.hg
+++ b/gtk/src/droptargetasync.hg
@@ -63,9 +63,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class DropTargetAsync : public EventController
+class GTKMM_API DropTargetAsync : public EventController
 {
-  _CLASS_GOBJECT(DropTargetAsync, GtkDropTargetAsync, GTK_DROP_TARGET_ASYNC, EventController, 
GtkEventController)
+  _CLASS_GOBJECT(DropTargetAsync, GtkDropTargetAsync, GTK_DROP_TARGET_ASYNC, EventController, 
GtkEventController, , , GTKMM_API)
 
 public:
   // Gdk::ContentFormats is an immutable object. It can be declared const
diff --git a/gtk/src/editable.hg b/gtk/src/editable.hg
index b84051ce..9dc4a5ed 100644
--- a/gtk/src/editable.hg
+++ b/gtk/src/editable.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/interface_p.h)
@@ -38,9 +40,9 @@ namespace Gtk
  * signals that an application can connect to to modify the behavior of a
  * widget.
  */
-class Editable : public Glib::Interface
+class GTKMM_API Editable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Editable,GtkEditable,GTK_EDITABLE,GtkEditableInterface)
+  _CLASS_INTERFACE(Editable,GtkEditable,GTK_EDITABLE,GtkEditableInterface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_text() const, gtk_editable_get_text)
diff --git a/gtk/src/emojichooser.hg b/gtk/src/emojichooser.hg
index 659e176b..7ee7a7ba 100644
--- a/gtk/src/emojichooser.hg
+++ b/gtk/src/emojichooser.hg
@@ -34,9 +34,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class EmojiChooser : public Popover
+class GTKMM_API EmojiChooser : public Popover
 {
-  _CLASS_GTKOBJECT(EmojiChooser, GtkEmojiChooser, GTK_EMOJI_CHOOSER, Gtk::Popover, GtkPopover)
+  _CLASS_GTKOBJECT(EmojiChooser, GtkEmojiChooser, GTK_EMOJI_CHOOSER, Gtk::Popover, GtkPopover, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/entry.hg b/gtk/src/entry.hg
index 11db8373..b5763fbe 100644
--- a/gtk/src/entry.hg
+++ b/gtk/src/entry.hg
@@ -50,11 +50,11 @@ class Entry
   public Editable,
   public CellEditable
 {
-  _CLASS_GTKOBJECT(Entry,GtkEntry,GTK_ENTRY,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Entry,GtkEntry,GTK_ENTRY,Gtk::Widget,GtkWidget,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Editable)
   _IMPLEMENTS_INTERFACE(CellEditable)
 public:
-  _WRAP_ENUM(IconPosition, GtkEntryIconPosition)
+  _WRAP_ENUM(IconPosition, GtkEntryIconPosition, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT
   _WRAP_CTOR(Entry(const Glib::RefPtr<EntryBuffer>& buffer), gtk_entry_new_with_buffer)
diff --git a/gtk/src/entrybuffer.hg b/gtk/src/entrybuffer.hg
index 907efb3d..3466bec4 100644
--- a/gtk/src/entrybuffer.hg
+++ b/gtk/src/entrybuffer.hg
@@ -44,9 +44,9 @@ namespace Gtk
  *
  * @newin{2,20}
  */
-class EntryBuffer : public Glib::Object
+class GTKMM_API EntryBuffer : public Glib::Object
 {
-   _CLASS_GOBJECT(EntryBuffer, GtkEntryBuffer, GTK_ENTRY_BUFFER, Glib::Object, GObject)
+   _CLASS_GOBJECT(EntryBuffer, GtkEntryBuffer, GTK_ENTRY_BUFFER, Glib::Object, GObject, , , GTKMM_API)
 protected:
 
   /** Create a new EntryBuffer object with no text.
diff --git a/gtk/src/entrycompletion.hg b/gtk/src/entrycompletion.hg
index 519c0514..0876d8f8 100644
--- a/gtk/src/entrycompletion.hg
+++ b/gtk/src/entrycompletion.hg
@@ -24,8 +24,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class CellArea;
-class Entry;
+class GTKMM_API CellArea;
+class GTKMM_API Entry;
 
 /** Completion functionality for Gtk::Entry.
  *
@@ -55,12 +55,12 @@ class Entry;
  * to differentiate them clearly from completion strings. When an action is
  * selected, the action_activated signal is emitted.
  */
-class EntryCompletion
+class GTKMM_API EntryCompletion
  : public Glib::Object,
    public Gtk::CellLayout,
    public Gtk::Buildable
 {
-  _CLASS_GOBJECT(EntryCompletion, GtkEntryCompletion, GTK_ENTRY_COMPLETION, Glib::Object, GObject)
+  _CLASS_GOBJECT(EntryCompletion, GtkEntryCompletion, GTK_ENTRY_COMPLETION, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(Buildable)
 
diff --git a/gtk/src/enums.hg b/gtk/src/enums.hg
index 0f5f67dc..aa1ba0f4 100644
--- a/gtk/src/enums.hg
+++ b/gtk/src/enums.hg
@@ -16,6 +16,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/value.h>
 #include <gtk/gtk.h>
 
@@ -26,38 +28,38 @@ namespace Gtk
 
 _CC_INCLUDE(gtk/gtk.h)
 
-_WRAP_ENUM(Align, GtkAlign)
-_WRAP_ENUM(ArrowType, GtkArrowType)
-_WRAP_ENUM(DeleteType, GtkDeleteType)
-_WRAP_ENUM(DirectionType, GtkDirectionType)
-_WRAP_ENUM(IconSize, GtkIconSize)
-_WRAP_ENUM(TextDirection, GtkTextDirection)
-_WRAP_ENUM(Justification, GtkJustification)
-_WRAP_ENUM(MenuDirectionType, GtkMenuDirectionType)
-_WRAP_ENUM(MessageType, GtkMessageType)
-_WRAP_ENUM(MovementStep, GtkMovementStep)
-_WRAP_ENUM(Orientation, GtkOrientation)
-_WRAP_ENUM(Overflow, GtkOverflow)
-_WRAP_ENUM(CornerType, GtkCornerType)
-_WRAP_ENUM(PackType, GtkPackType)
-_WRAP_ENUM(PickFlags, GtkPickFlags)
-_WRAP_ENUM(PlacesOpenFlags, GtkPlacesOpenFlags)
-_WRAP_ENUM(PolicyType, GtkPolicyType)
-_WRAP_ENUM(PositionType, GtkPositionType)
-_WRAP_ENUM(RevealerTransitionType, GtkRevealerTransitionType)
-_WRAP_ENUM(ScrollType, GtkScrollType)
-_WRAP_ENUM(SelectionMode, GtkSelectionMode)
-_WRAP_ENUM(StackTransitionType, GtkStackTransitionType)
-_WRAP_ENUM(WrapMode, GtkWrapMode)
-_WRAP_ENUM(SortType, GtkSortType)
-_WRAP_ENUM(PageOrientation, GtkPageOrientation)
-_WRAP_ENUM(SensitivityType, GtkSensitivityType)
-_WRAP_ENUM(SizeRequestMode, GtkSizeRequestMode)
-_WRAP_ENUM(StateFlags, GtkStateFlags)
-_WRAP_ENUM(InputPurpose, GtkInputPurpose)
-_WRAP_ENUM(InputHints, GtkInputHints)
-_WRAP_ENUM(BaselinePosition, GtkBaselinePosition)
-_WRAP_ENUM(ShortcutScope, GtkShortcutScope)
+_WRAP_ENUM(Align, GtkAlign, decl_prefix GTKMM_API)
+_WRAP_ENUM(ArrowType, GtkArrowType, decl_prefix GTKMM_API)
+_WRAP_ENUM(DeleteType, GtkDeleteType, decl_prefix GTKMM_API)
+_WRAP_ENUM(DirectionType, GtkDirectionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(IconSize, GtkIconSize, decl_prefix GTKMM_API)
+_WRAP_ENUM(TextDirection, GtkTextDirection, decl_prefix GTKMM_API)
+_WRAP_ENUM(Justification, GtkJustification, decl_prefix GTKMM_API)
+_WRAP_ENUM(MenuDirectionType, GtkMenuDirectionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(MessageType, GtkMessageType, decl_prefix GTKMM_API)
+_WRAP_ENUM(MovementStep, GtkMovementStep, decl_prefix GTKMM_API)
+_WRAP_ENUM(Orientation, GtkOrientation, decl_prefix GTKMM_API)
+_WRAP_ENUM(Overflow, GtkOverflow, decl_prefix GTKMM_API)
+_WRAP_ENUM(CornerType, GtkCornerType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PackType, GtkPackType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PickFlags, GtkPickFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(PlacesOpenFlags, GtkPlacesOpenFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(PolicyType, GtkPolicyType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PositionType, GtkPositionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(RevealerTransitionType, GtkRevealerTransitionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(ScrollType, GtkScrollType, decl_prefix GTKMM_API)
+_WRAP_ENUM(SelectionMode, GtkSelectionMode, decl_prefix GTKMM_API)
+_WRAP_ENUM(StackTransitionType, GtkStackTransitionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(WrapMode, GtkWrapMode, decl_prefix GTKMM_API)
+_WRAP_ENUM(SortType, GtkSortType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PageOrientation, GtkPageOrientation, decl_prefix GTKMM_API)
+_WRAP_ENUM(SensitivityType, GtkSensitivityType, decl_prefix GTKMM_API)
+_WRAP_ENUM(SizeRequestMode, GtkSizeRequestMode, decl_prefix GTKMM_API)
+_WRAP_ENUM(StateFlags, GtkStateFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(InputPurpose, GtkInputPurpose, decl_prefix GTKMM_API)
+_WRAP_ENUM(InputHints, GtkInputHints, decl_prefix GTKMM_API)
+_WRAP_ENUM(BaselinePosition, GtkBaselinePosition, decl_prefix GTKMM_API)
+_WRAP_ENUM(ShortcutScope, GtkShortcutScope, decl_prefix GTKMM_API)
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 //We need this because we can't just use floats for enum value.
diff --git a/gtk/src/eventcontroller.hg b/gtk/src/eventcontroller.hg
index ea580059..816647ff 100644
--- a/gtk/src/eventcontroller.hg
+++ b/gtk/src/eventcontroller.hg
@@ -45,8 +45,8 @@ namespace Gtk
  * @newin{3,14}
  */
 
-_WRAP_ENUM(PropagationPhase, GtkPropagationPhase)
-_WRAP_ENUM(PropagationLimit, GtkPropagationLimit)
+_WRAP_ENUM(PropagationPhase, GtkPropagationPhase, decl_prefix GTKMM_API)
+_WRAP_ENUM(PropagationLimit, GtkPropagationLimit, decl_prefix GTKMM_API)
 
 /** Self-contained handler of series of events.
  *
@@ -58,9 +58,9 @@ _WRAP_ENUM(PropagationLimit, GtkPropagationLimit)
  *
  * @ingroup Gestures
  */
-class EventController : public Glib::Object
+class GTKMM_API EventController : public Glib::Object
 {
-  _CLASS_GOBJECT(EventController, GtkEventController, GTK_EVENT_CONTROLLER, Glib::Object, GObject)
+  _CLASS_GOBJECT(EventController, GtkEventController, GTK_EVENT_CONTROLLER, Glib::Object, GObject, , , 
GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/eventcontrollerfocus.hg b/gtk/src/eventcontrollerfocus.hg
index f558ba14..5e7eb337 100644
--- a/gtk/src/eventcontrollerfocus.hg
+++ b/gtk/src/eventcontrollerfocus.hg
@@ -23,7 +23,7 @@ _PINCLUDE(gtkmm/private/eventcontroller_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Event controller for focus.
  *
@@ -34,9 +34,9 @@ class Widget;
  *
  * @ingroup Gestures
  */
-class EventControllerFocus : public EventController
+class GTKMM_API EventControllerFocus : public EventController
 {
-  _CLASS_GOBJECT(EventControllerFocus, GtkEventControllerFocus, GTK_EVENT_CONTROLLER_FOCUS, EventController, 
GtkEventController)
+  _CLASS_GOBJECT(EventControllerFocus, GtkEventControllerFocus, GTK_EVENT_CONTROLLER_FOCUS, EventController, 
GtkEventController, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/eventcontrollerkey.hg b/gtk/src/eventcontrollerkey.hg
index 246f8d7e..792e6083 100644
--- a/gtk/src/eventcontrollerkey.hg
+++ b/gtk/src/eventcontrollerkey.hg
@@ -23,7 +23,7 @@ _PINCLUDE(gtkmm/private/eventcontroller_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Event controller for key events.
  *
@@ -34,9 +34,9 @@ class Widget;
  *
  * @ingroup Gestures
  */
-class EventControllerKey : public EventController
+class GTKMM_API EventControllerKey : public EventController
 {
-  _CLASS_GOBJECT(EventControllerKey, GtkEventControllerKey, GTK_EVENT_CONTROLLER_KEY, EventController, 
GtkEventController)
+  _CLASS_GOBJECT(EventControllerKey, GtkEventControllerKey, GTK_EVENT_CONTROLLER_KEY, EventController, 
GtkEventController, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/eventcontrollermotion.hg b/gtk/src/eventcontrollermotion.hg
index b8b17fbe..d4bb13b1 100644
--- a/gtk/src/eventcontrollermotion.hg
+++ b/gtk/src/eventcontrollermotion.hg
@@ -21,7 +21,7 @@ _PINCLUDE(gtkmm/private/eventcontroller_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Event controller for motion events.
  *
@@ -32,9 +32,9 @@ class Widget;
  *
  * @ingroup Gestures
  */
-class EventControllerMotion : public EventController
+class GTKMM_API EventControllerMotion : public EventController
 {
-  _CLASS_GOBJECT(EventControllerMotion, GtkEventControllerMotion, GTK_EVENT_CONTROLLER_MOTION, 
EventController, GtkEventController)
+  _CLASS_GOBJECT(EventControllerMotion, GtkEventControllerMotion, GTK_EVENT_CONTROLLER_MOTION, 
EventController, GtkEventController, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/eventcontrollerscroll.hg b/gtk/src/eventcontrollerscroll.hg
index ee9983c5..eab2df2a 100644
--- a/gtk/src/eventcontrollerscroll.hg
+++ b/gtk/src/eventcontrollerscroll.hg
@@ -58,15 +58,15 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class EventControllerScroll : public EventController
+class GTKMM_API EventControllerScroll : public EventController
 {
-  _CLASS_GOBJECT(EventControllerScroll, GtkEventControllerScroll, GTK_EVENT_CONTROLLER_SCROLL, 
EventController, GtkEventController)
+  _CLASS_GOBJECT(EventControllerScroll, GtkEventControllerScroll, GTK_EVENT_CONTROLLER_SCROLL, 
EventController, GtkEventController, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
 
 public:
-  _WRAP_ENUM(Flags, GtkEventControllerScrollFlags)
+  _WRAP_ENUM(Flags, GtkEventControllerScrollFlags, decl_prefix GTKMM_API)
 
   _WRAP_CREATE()
 
diff --git a/gtk/src/expander.hg b/gtk/src/expander.hg
index 5f9a4482..4272abb1 100644
--- a/gtk/src/expander.hg
+++ b/gtk/src/expander.hg
@@ -49,9 +49,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Expander : public Widget
+class GTKMM_API Expander : public Widget
 {
-  _CLASS_GTKOBJECT(Expander, GtkExpander, GTK_EXPANDER, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Expander, GtkExpander, GTK_EXPANDER, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Creates a new Expander.
diff --git a/gtk/src/filechooser.hg b/gtk/src/filechooser.hg
index ca278786..19fd8735 100644
--- a/gtk/src/filechooser.hg
+++ b/gtk/src/filechooser.hg
@@ -32,7 +32,7 @@ namespace Gtk
 
 /** Exception class for Gdk::FileChooser errors.
  */
-_WRAP_GERROR(FileChooserError,GtkFileChooserError,GTK_FILE_CHOOSER_ERROR)
+_WRAP_GERROR(FileChooserError,GtkFileChooserError,GTK_FILE_CHOOSER_ERROR, decl_prefix GTKMM_API)
 
 /**
  * Gtk::FileChooser is an interface that can be implemented by file selection
@@ -57,11 +57,11 @@ _WRAP_GERROR(FileChooserError,GtkFileChooserError,GTK_FILE_CHOOSER_ERROR)
  * Glib::filename_to_utf8() to convert filenames into strings that can be
  * passed to gtkmm widgets.
  */
-class FileChooser : public Glib::Interface
+class GTKMM_API FileChooser : public Glib::Interface
 {
-  _CLASS_INTERFACE(FileChooser, GtkFileChooser, GTK_FILE_CHOOSER, GtkFileChooserClass)
+  _CLASS_INTERFACE(FileChooser, GtkFileChooser, GTK_FILE_CHOOSER, GtkFileChooserClass, , , GTKMM_API)
 public:
-  _WRAP_ENUM(Action, GtkFileChooserAction)
+  _WRAP_ENUM(Action, GtkFileChooserAction, decl_prefix GTKMM_API)
 
   _WRAP_METHOD(void set_action(Action action), gtk_file_chooser_set_action)
   _WRAP_METHOD(Action get_action() const, gtk_file_chooser_get_action)
diff --git a/gtk/src/filechooserbutton.hg b/gtk/src/filechooserbutton.hg
index 9b84b721..bc491b85 100644
--- a/gtk/src/filechooserbutton.hg
+++ b/gtk/src/filechooserbutton.hg
@@ -42,11 +42,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class FileChooserButton
+class GTKMM_API FileChooserButton
   : public Widget,
     public FileChooser
 {
-  _CLASS_GTKOBJECT(FileChooserButton, GtkFileChooserButton, GTK_FILE_CHOOSER_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FileChooserButton, GtkFileChooserButton, GTK_FILE_CHOOSER_BUTTON, Gtk::Widget, GtkWidget, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
 public:
 
diff --git a/gtk/src/filechooserdialog.hg b/gtk/src/filechooserdialog.hg
index bfaaddfc..ad8e5567 100644
--- a/gtk/src/filechooserdialog.hg
+++ b/gtk/src/filechooserdialog.hg
@@ -32,11 +32,11 @@ namespace Gtk
  *
  * @ingroup Dialogs
  */
-class FileChooserDialog
+class GTKMM_API FileChooserDialog
   : public Dialog,
     public FileChooser
 {
-  _CLASS_GTKOBJECT(FileChooserDialog, GtkFileChooserDialog, GTK_FILE_CHOOSER_DIALOG, Gtk::Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(FileChooserDialog, GtkFileChooserDialog, GTK_FILE_CHOOSER_DIALOG, Gtk::Dialog, GtkDialog, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
   _UNMANAGEABLE
 public:
diff --git a/gtk/src/filechoosernative.hg b/gtk/src/filechoosernative.hg
index 718fb428..791d120b 100644
--- a/gtk/src/filechoosernative.hg
+++ b/gtk/src/filechoosernative.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/nativedialog_p.h)
 
 namespace Gtk
 {
-class Window;
+class GTKMM_API Window;
 
 /** A native file chooser dialog, suitable for “File/Open” or “File/Save” commands.
  *
@@ -102,9 +102,9 @@ class Window;
  * @see Gtk::FileChooser, Gtk::NativeDialog, Gtk::FileChooserDialog
  * @newin{3,24}
  */
-class FileChooserNative : public NativeDialog, public FileChooser
+class GTKMM_API FileChooserNative : public NativeDialog, public FileChooser
 {
-  _CLASS_GOBJECT(FileChooserNative, GtkFileChooserNative, GTK_FILE_CHOOSER_NATIVE, NativeDialog, 
GtkNativeDialog)
+  _CLASS_GOBJECT(FileChooserNative, GtkFileChooserNative, GTK_FILE_CHOOSER_NATIVE, NativeDialog, 
GtkNativeDialog, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gtk/src/filechooserwidget.hg b/gtk/src/filechooserwidget.hg
index c10553b0..4df38514 100644
--- a/gtk/src/filechooserwidget.hg
+++ b/gtk/src/filechooserwidget.hg
@@ -35,11 +35,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class FileChooserWidget
+class GTKMM_API FileChooserWidget
 : public Widget,
   public FileChooser
 {
-  _CLASS_GTKOBJECT(FileChooserWidget, GtkFileChooserWidget, GTK_FILE_CHOOSER_WIDGET, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FileChooserWidget, GtkFileChooserWidget, GTK_FILE_CHOOSER_WIDGET, Gtk::Widget, GtkWidget, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
 public:
   _CTOR_DEFAULT;
diff --git a/gtk/src/filefilter.hg b/gtk/src/filefilter.hg
index 0509c6c6..e4426464 100644
--- a/gtk/src/filefilter.hg
+++ b/gtk/src/filefilter.hg
@@ -39,16 +39,16 @@ namespace Gtk
  *
  * Filters are used by adding them to a Gtk::FileChooser. See Gtk::FileChooser::add_filter().
  */
-class FileFilter : public Glib::Object, public Buildable
+class GTKMM_API FileFilter : public Glib::Object, public Buildable
 {
-  _CLASS_GOBJECT(FileFilter, GtkFileFilter, GTK_FILE_FILTER, Glib::Object, GObject)
+  _CLASS_GOBJECT(FileFilter, GtkFileFilter, GTK_FILE_FILTER, Glib::Object, GObject, , , GTKMM_API)
   _DERIVES_INITIALLY_UNOWNED()
   _IMPLEMENTS_INTERFACE(Buildable)
 protected:
   _CTOR_DEFAULT
 
 public:
-  _WRAP_ENUM(Flags, GtkFileFilterFlags)
+  _WRAP_ENUM(Flags, GtkFileFilterFlags, decl_prefix GTKMM_API)
 
   _WRAP_CREATE()
 
diff --git a/gtk/src/fixed.hg b/gtk/src/fixed.hg
index dd146bbe..5c15fdf4 100644
--- a/gtk/src/fixed.hg
+++ b/gtk/src/fixed.hg
@@ -37,9 +37,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Fixed : public Widget
+class GTKMM_API Fixed : public Widget
 {
-  _CLASS_GTKOBJECT(Fixed, GtkFixed, GTK_FIXED, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Fixed, GtkFixed, GTK_FIXED, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/flowbox.hg b/gtk/src/flowbox.hg
index ffc72eb2..52753ded 100644
--- a/gtk/src/flowbox.hg
+++ b/gtk/src/flowbox.hg
@@ -57,11 +57,11 @@ namespace Gtk
  *
  * @newin{3,12}
  */
-class FlowBox
+class GTKMM_API FlowBox
   : public Widget,
     public Orientable
 {
-  _CLASS_GTKOBJECT(FlowBox, GtkFlowBox, GTK_FLOW_BOX, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FlowBox, GtkFlowBox, GTK_FLOW_BOX, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
 
diff --git a/gtk/src/flowboxchild.hg b/gtk/src/flowboxchild.hg
index 5d749945..34449700 100644
--- a/gtk/src/flowboxchild.hg
+++ b/gtk/src/flowboxchild.hg
@@ -29,10 +29,10 @@ namespace Gtk
  *
  * @newin{3,12}
  */
-class FlowBoxChild
+class GTKMM_API FlowBoxChild
   : public Widget
 {
-  _CLASS_GTKOBJECT(FlowBoxChild, GtkFlowBoxChild, GTK_FLOW_BOX_CHILD, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FlowBoxChild, GtkFlowBoxChild, GTK_FLOW_BOX_CHILD, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Creates a new FlowBoxChild, to be used as a child of a FlowBox.
diff --git a/gtk/src/fontbutton.hg b/gtk/src/fontbutton.hg
index 62797fd1..ce2f35dd 100644
--- a/gtk/src/fontbutton.hg
+++ b/gtk/src/fontbutton.hg
@@ -37,11 +37,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class FontButton
+class GTKMM_API FontButton
   : public Widget,
     public FontChooser
 {
-  _CLASS_GTKOBJECT(FontButton, GtkFontButton, GTK_FONT_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FontButton, GtkFontButton, GTK_FONT_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FontChooser)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/fontchooser.hg b/gtk/src/fontchooser.hg
index 4dba984a..efd50ba2 100644
--- a/gtk/src/fontchooser.hg
+++ b/gtk/src/fontchooser.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/interface_p.h)
 
@@ -48,11 +50,11 @@ namespace Gtk
  * @ingroup FontChooser
  * @newin{3,2}
  */
-class FontChooser : public Glib::Interface
+class GTKMM_API FontChooser : public Glib::Interface
 {
-  _CLASS_INTERFACE(FontChooser, GtkFontChooser, GTK_FONT_CHOOSER, GtkFontChooserIface)
+  _CLASS_INTERFACE(FontChooser, GtkFontChooser, GTK_FONT_CHOOSER, GtkFontChooserIface, , , GTKMM_API)
 public:
-  _WRAP_ENUM(Level, GtkFontChooserLevel)
+  _WRAP_ENUM(Level, GtkFontChooserLevel, decl_prefix GTKMM_API)
 
   _WRAP_METHOD(Glib::RefPtr<Pango::FontFamily> get_font_family(), gtk_font_chooser_get_font_family, 
refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Pango::FontFamily> get_font_family() const, 
gtk_font_chooser_get_font_family, refreturn, constversion)
diff --git a/gtk/src/fontchooserdialog.hg b/gtk/src/fontchooserdialog.hg
index 4b4c8242..ae4d35db 100644
--- a/gtk/src/fontchooserdialog.hg
+++ b/gtk/src/fontchooserdialog.hg
@@ -38,11 +38,11 @@ namespace Gtk
  * @ingroup FontChooser
  * @newin{3,2}
  */
-class FontChooserDialog
+class GTKMM_API FontChooserDialog
   : public Dialog,
     public FontChooser
 {
-  _CLASS_GTKOBJECT(FontChooserDialog, GtkFontChooserDialog, GTK_FONT_CHOOSER_DIALOG, Gtk::Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(FontChooserDialog, GtkFontChooserDialog, GTK_FONT_CHOOSER_DIALOG, Gtk::Dialog, GtkDialog, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FontChooser)
   _UNMANAGEABLE
 public:
diff --git a/gtk/src/fontchooserwidget.hg b/gtk/src/fontchooserwidget.hg
index 0c70de5b..4679d631 100644
--- a/gtk/src/fontchooserwidget.hg
+++ b/gtk/src/fontchooserwidget.hg
@@ -38,11 +38,11 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,2}
  */
-class FontChooserWidget
+class GTKMM_API FontChooserWidget
   : public Widget,
     public FontChooser
 {
-  _CLASS_GTKOBJECT(FontChooserWidget, GtkFontChooserWidget, GTK_FONT_CHOOSER_WIDGET, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(FontChooserWidget, GtkFontChooserWidget, GTK_FONT_CHOOSER_WIDGET, Gtk::Widget, GtkWidget, 
, , GTKMM_API)
   _IMPLEMENTS_INTERFACE(FontChooser)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/frame.hg b/gtk/src/frame.hg
index f6a9169d..9d83227f 100644
--- a/gtk/src/frame.hg
+++ b/gtk/src/frame.hg
@@ -37,9 +37,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Frame : public Widget
+class GTKMM_API Frame : public Widget
 {
-  _CLASS_GTKOBJECT(Frame, GtkFrame, GTK_FRAME, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Frame, GtkFrame, GTK_FRAME, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT()
diff --git a/gtk/src/gesture.hg b/gtk/src/gesture.hg
index 2085170c..a794a386 100644
--- a/gtk/src/gesture.hg
+++ b/gtk/src/gesture.hg
@@ -23,12 +23,12 @@ _PINCLUDE(gtkmm/private/eventcontroller_p.h)
 
 namespace Gdk
 {
-class Device;
+class GTKMM_API Device;
 }
 
 namespace Gtk
 {
-_WRAP_ENUM(EventSequenceState, GtkEventSequenceState)
+_WRAP_ENUM(EventSequenceState, GtkEventSequenceState, decl_prefix GTKMM_API)
 
 /** Abstract base class for gestures.
  *
@@ -117,9 +117,9 @@ _WRAP_ENUM(EventSequenceState, GtkEventSequenceState)
  *
  * @ingroup Gestures
  */
-class Gesture : public EventController
+class GTKMM_API Gesture : public EventController
 {
-  _CLASS_GOBJECT(Gesture, GtkGesture, GTK_GESTURE, EventController, GtkEventController)
+  _CLASS_GOBJECT(Gesture, GtkGesture, GTK_GESTURE, EventController, GtkEventController, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gestureclick.hg b/gtk/src/gestureclick.hg
index b3e7b97d..39c4e851 100644
--- a/gtk/src/gestureclick.hg
+++ b/gtk/src/gestureclick.hg
@@ -34,9 +34,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureClick : public GestureSingle
+class GTKMM_API GestureClick : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureClick, GtkGestureClick, GTK_GESTURE_CLICK, GestureSingle, GtkGestureSingle)
+  _CLASS_GOBJECT(GestureClick, GtkGestureClick, GTK_GESTURE_CLICK, GestureSingle, GtkGestureSingle, , , 
GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes single and multiple presses.
diff --git a/gtk/src/gesturedrag.hg b/gtk/src/gesturedrag.hg
index 12543e67..7babddbb 100644
--- a/gtk/src/gesturedrag.hg
+++ b/gtk/src/gesturedrag.hg
@@ -33,9 +33,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureDrag : public GestureSingle
+class GTKMM_API GestureDrag : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureDrag, GtkGestureDrag, GTK_GESTURE_DRAG, GestureSingle, GtkGestureSingle)
+  _CLASS_GOBJECT(GestureDrag, GtkGestureDrag, GTK_GESTURE_DRAG, GestureSingle, GtkGestureSingle, , , 
GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes drags.
diff --git a/gtk/src/gesturelongpress.hg b/gtk/src/gesturelongpress.hg
index 4a3c351c..9d8051fc 100644
--- a/gtk/src/gesturelongpress.hg
+++ b/gtk/src/gesturelongpress.hg
@@ -34,9 +34,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureLongPress : public GestureSingle
+class GTKMM_API GestureLongPress : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureLongPress, GtkGestureLongPress, GTK_GESTURE_LONG_PRESS, GestureSingle, 
GtkGestureSingle)
+  _CLASS_GOBJECT(GestureLongPress, GtkGestureLongPress, GTK_GESTURE_LONG_PRESS, GestureSingle, 
GtkGestureSingle, , , GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes long presses.
diff --git a/gtk/src/gesturepan.hg b/gtk/src/gesturepan.hg
index ca355132..d0c6739b 100644
--- a/gtk/src/gesturepan.hg
+++ b/gtk/src/gesturepan.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/gesturedrag_p.h)
 
 namespace Gtk
 {
-_WRAP_ENUM(PanDirection, GtkPanDirection)
+_WRAP_ENUM(PanDirection, GtkPanDirection, decl_prefix GTKMM_API)
 
 /** Pan gesture.
  *
@@ -44,9 +44,9 @@ _WRAP_ENUM(PanDirection, GtkPanDirection)
  *
  * @ingroup Gestures
  */
-class GesturePan : public GestureDrag
+class GTKMM_API GesturePan : public GestureDrag
 {
-  _CLASS_GOBJECT(GesturePan, GtkGesturePan, GTK_GESTURE_PAN, GestureDrag, GtkGestureDrag)
+  _CLASS_GOBJECT(GesturePan, GtkGesturePan, GTK_GESTURE_PAN, GestureDrag, GtkGestureDrag, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturerotate.hg b/gtk/src/gesturerotate.hg
index ca571917..04c9ec2f 100644
--- a/gtk/src/gesturerotate.hg
+++ b/gtk/src/gesturerotate.hg
@@ -31,9 +31,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureRotate : public Gesture
+class GTKMM_API GestureRotate : public Gesture
 {
-  _CLASS_GOBJECT(GestureRotate, GtkGestureRotate, GTK_GESTURE_ROTATE, Gesture, GtkGesture)
+  _CLASS_GOBJECT(GestureRotate, GtkGestureRotate, GTK_GESTURE_ROTATE, Gesture, GtkGesture, , , GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes 2-touch rotation gestures.
diff --git a/gtk/src/gesturesingle.hg b/gtk/src/gesturesingle.hg
index fde0bddb..cda867d3 100644
--- a/gtk/src/gesturesingle.hg
+++ b/gtk/src/gesturesingle.hg
@@ -37,9 +37,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureSingle : public Gesture
+class GTKMM_API GestureSingle : public Gesture
 {
-  _CLASS_GOBJECT(GestureSingle, GtkGestureSingle, GTK_GESTURE_SINGLE, Gesture, GtkGesture)
+  _CLASS_GOBJECT(GestureSingle, GtkGestureSingle, GTK_GESTURE_SINGLE, Gesture, GtkGesture, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturestylus.hg b/gtk/src/gesturestylus.hg
index eedebba6..cc581073 100644
--- a/gtk/src/gesturestylus.hg
+++ b/gtk/src/gesturestylus.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/gesturesingle_p.h)
 
 namespace Gdk
 {
-class DeviceTool;
+class GTKMM_API DeviceTool;
 }
 
 namespace Gtk
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureStylus : public GestureSingle
+class GTKMM_API GestureStylus : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureStylus, GtkGestureStylus, GTK_GESTURE_STYLUS, GestureSingle, GtkGestureSingle)
+  _CLASS_GOBJECT(GestureStylus, GtkGestureStylus, GTK_GESTURE_STYLUS, GestureSingle, GtkGestureSingle, , , 
GTKMM_API)
 
 protected:
   /** Constructs a %GestureStylus.
diff --git a/gtk/src/gestureswipe.hg b/gtk/src/gestureswipe.hg
index a345ee67..a61849b5 100644
--- a/gtk/src/gestureswipe.hg
+++ b/gtk/src/gestureswipe.hg
@@ -38,9 +38,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureSwipe : public GestureSingle
+class GTKMM_API GestureSwipe : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureSwipe, GtkGestureSwipe, GTK_GESTURE_SWIPE, GestureSingle, GtkGestureSingle)
+  _CLASS_GOBJECT(GestureSwipe, GtkGestureSwipe, GTK_GESTURE_SWIPE, GestureSingle, GtkGestureSingle, , , 
GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes swipes.
diff --git a/gtk/src/gesturezoom.hg b/gtk/src/gesturezoom.hg
index 33af3e61..e9bfab44 100644
--- a/gtk/src/gesturezoom.hg
+++ b/gtk/src/gesturezoom.hg
@@ -31,9 +31,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureZoom : public Gesture
+class GTKMM_API GestureZoom : public Gesture
 {
-  _CLASS_GOBJECT(GestureZoom, GtkGestureZoom, GTK_GESTURE_ZOOM, Gesture, GtkGesture)
+  _CLASS_GOBJECT(GestureZoom, GtkGestureZoom, GTK_GESTURE_ZOOM, Gesture, GtkGesture, , , GTKMM_API)
 
 protected:
   /** Constructs a Gesture that recognizes zoom in/out gestures
diff --git a/gtk/src/glarea.hg b/gtk/src/glarea.hg
index 1ef21a1a..0a5a54ef 100644
--- a/gtk/src/glarea.hg
+++ b/gtk/src/glarea.hg
@@ -29,9 +29,9 @@ namespace Gtk
  * @newin{3,18}
  * @ingroup Widgets
  */
-class GLArea : public Widget
+class GTKMM_API GLArea : public Widget
 {
-  _CLASS_GTKOBJECT(GLArea,GtkGLArea,GTK_GL_AREA,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(GLArea,GtkGLArea,GTK_GL_AREA,Gtk::Widget,GtkWidget, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/grid.hg b/gtk/src/grid.hg
index a1676624..f75a1dec 100644
--- a/gtk/src/grid.hg
+++ b/gtk/src/grid.hg
@@ -42,11 +42,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class Grid
+class GTKMM_API Grid
   : public Widget,
     public Orientable
 {
-  _CLASS_GTKOBJECT(Grid, GtkGrid, GTK_GRID, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Grid, GtkGrid, GTK_GRID, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/gridlayout.hg b/gtk/src/gridlayout.hg
index 50dff2b0..98787512 100644
--- a/gtk/src/gridlayout.hg
+++ b/gtk/src/gridlayout.hg
@@ -42,9 +42,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class GridLayout : public LayoutManager
+class GTKMM_API GridLayout : public LayoutManager
 {
-  _CLASS_GOBJECT(GridLayout, GtkGridLayout, GTK_GRID_LAYOUT, LayoutManager, GtkLayoutManager)
+  _CLASS_GOBJECT(GridLayout, GtkGridLayout, GTK_GRID_LAYOUT, LayoutManager, GtkLayoutManager, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 protected:
diff --git a/gtk/src/gridlayoutchild.hg b/gtk/src/gridlayoutchild.hg
index d0a3e307..f6ce8ce4 100644
--- a/gtk/src/gridlayoutchild.hg
+++ b/gtk/src/gridlayoutchild.hg
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @newin{3,96}
  */
-class GridLayoutChild : public LayoutChild
+class GTKMM_API GridLayoutChild : public LayoutChild
 {
-  _CLASS_GOBJECT(GridLayoutChild, GtkGridLayoutChild, GTK_GRID_LAYOUT_CHILD, LayoutChild, GtkLayoutChild)
+  _CLASS_GOBJECT(GridLayoutChild, GtkGridLayoutChild, GTK_GRID_LAYOUT_CHILD, LayoutChild, GtkLayoutChild, , 
, GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 protected:
diff --git a/gtk/src/headerbar.hg b/gtk/src/headerbar.hg
index 80d9be44..1493cf28 100644
--- a/gtk/src/headerbar.hg
+++ b/gtk/src/headerbar.hg
@@ -34,10 +34,10 @@ namespace Gtk
  * @ingroup Containers
  * @newin{3,10}
  */
-class HeaderBar
+class GTKMM_API HeaderBar
   : public Widget
 {
-  _CLASS_GTKOBJECT(HeaderBar, GtkHeaderBar, GTK_HEADER_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(HeaderBar, GtkHeaderBar, GTK_HEADER_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Create a new HeaderBar widget.
diff --git a/gtk/src/iconpaintable.hg b/gtk/src/iconpaintable.hg
index 5c207a16..dcc79999 100644
--- a/gtk/src/iconpaintable.hg
+++ b/gtk/src/iconpaintable.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <gdkmm/paintable.h>
 #include <giomm/file.h>
@@ -27,9 +29,9 @@ namespace Gtk
 
 /** An icon, used with Gtk::IconTheme.
  */
-class IconPaintable : public Glib::Object, public Gdk::Paintable
+class GTKMM_API IconPaintable : public Glib::Object, public Gdk::Paintable
 {
-  _CLASS_GOBJECT(IconPaintable, GtkIconPaintable, GTK_ICON_PAINTABLE, Glib::Object, GObject)
+  _CLASS_GOBJECT(IconPaintable, GtkIconPaintable, GTK_ICON_PAINTABLE, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gdk::Paintable)
 
 public:
diff --git a/gtk/src/icontheme.hg b/gtk/src/icontheme.hg
index 515ccfca..007fcc73 100644
--- a/gtk/src/icontheme.hg
+++ b/gtk/src/icontheme.hg
@@ -29,11 +29,11 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)
+_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE, decl_prefix GTKMM_API)
 
 /** Exception class for Gtk::IconTheme errors.
  */
-_WRAP_GERROR(IconThemeError,GtkIconThemeError,GTK_ICON_THEME_ERROR)
+_WRAP_GERROR(IconThemeError,GtkIconThemeError,GTK_ICON_THEME_ERROR, decl_prefix GTKMM_API)
 
 /** Looking up icons by name.
  *
@@ -56,9 +56,9 @@ _WRAP_GERROR(IconThemeError,GtkIconThemeError,GTK_ICON_THEME_ERROR)
  * so that the icon information is shared with other people
  * looking up icons. Use get_for_display().
  */
-class IconTheme : public Glib::Object
+class GTKMM_API IconTheme : public Glib::Object
 {
-  _CLASS_GOBJECT(IconTheme, GtkIconTheme, GTK_ICON_THEME, Glib::Object, GObject)
+  _CLASS_GOBJECT(IconTheme, GtkIconTheme, GTK_ICON_THEME, Glib::Object, GObject, , , GTKMM_API)
   _IGNORE(gtk_icon_theme_set_search_path, gtk_icon_theme_get_search_path)
 
 protected:
diff --git a/gtk/src/iconview.hg b/gtk/src/iconview.hg
index 35d0a577..ba470ac9 100644
--- a/gtk/src/iconview.hg
+++ b/gtk/src/iconview.hg
@@ -42,17 +42,17 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class IconView
+class GTKMM_API IconView
  : public Widget,
    public CellLayout,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(IconView, GtkIconView, GTK_ICON_VIEW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(IconView, GtkIconView, GTK_ICON_VIEW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(Scrollable)
 
 public:
-  _WRAP_ENUM(DropPosition, GtkIconViewDropPosition)
+  _WRAP_ENUM(DropPosition, GtkIconViewDropPosition, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT()
   _WRAP_CTOR(IconView(const Glib::RefPtr<TreeModel>& model), gtk_icon_view_new_with_model)
diff --git a/gtk/src/image.hg b/gtk/src/image.hg
index d2adf7bb..c065ce77 100644
--- a/gtk/src/image.hg
+++ b/gtk/src/image.hg
@@ -39,11 +39,11 @@ _CC_INCLUDE(gtk/gtk.h)
  *
  * @ingroup Widgets
  */
-class Image : public Widget
+class GTKMM_API Image : public Widget
 {
-  _CLASS_GTKOBJECT(Image,GtkImage,GTK_IMAGE,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Image,GtkImage,GTK_IMAGE,Gtk::Widget,GtkWidget, , , GTKMM_API)
 public:
-  _WRAP_ENUM(Type, GtkImageType)
+  _WRAP_ENUM(Type, GtkImageType, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT
 
diff --git a/gtk/src/infobar.hg b/gtk/src/infobar.hg
index 86aa95b2..4e26c6e9 100644
--- a/gtk/src/infobar.hg
+++ b/gtk/src/infobar.hg
@@ -46,9 +46,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class InfoBar : public Widget
+class GTKMM_API InfoBar : public Widget
 {
-  _CLASS_GTKOBJECT(InfoBar, GtkInfoBar, GTK_INFO_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(InfoBar, GtkInfoBar, GTK_INFO_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/label.hg b/gtk/src/label.hg
index d5362d6c..43cef67f 100644
--- a/gtk/src/label.hg
+++ b/gtk/src/label.hg
@@ -26,7 +26,7 @@ _PINCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-class Menu;
+class GTKMM_API Menu;
 
 /** A widget that displays a small to medium amount of text.
  *
@@ -37,9 +37,9 @@ class Menu;
  *
  * @ingroup Widgets
  */
-class Label : public Widget
+class GTKMM_API Label : public Widget
 {
-  _CLASS_GTKOBJECT(Label, GtkLabel, GTK_LABEL, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Label, GtkLabel, GTK_LABEL, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   Label();
   explicit Label(const Glib::ustring& label, bool mnemonic = false);
diff --git a/gtk/src/layoutchild.hg b/gtk/src/layoutchild.hg
index 66269079..366cb2b8 100644
--- a/gtk/src/layoutchild.hg
+++ b/gtk/src/layoutchild.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/refptr.h>
 
@@ -22,8 +24,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class LayoutManager;
-class Widget;
+class GTKMM_API LayoutManager;
+class GTKMM_API Widget;
 
 /** An object containing layout properties.
  *
@@ -38,9 +40,9 @@ class Widget;
  *
  * @newin{3,96}
  */
-class LayoutChild : public Glib::Object
+class GTKMM_API LayoutChild : public Glib::Object
 {
-  _CLASS_GOBJECT(LayoutChild, GtkLayoutChild, GTK_LAYOUT_CHILD, Glib::Object, GObject)
+  _CLASS_GOBJECT(LayoutChild, GtkLayoutChild, GTK_LAYOUT_CHILD, Glib::Object, GObject, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/layoutmanager.hg b/gtk/src/layoutmanager.hg
index a768219f..5c022cee 100644
--- a/gtk/src/layoutmanager.hg
+++ b/gtk/src/layoutmanager.hg
@@ -23,8 +23,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class LayoutChild;
-class Widget;
+class GTKMM_API LayoutChild;
+class GTKMM_API Widget;
 
 /** Base class for layout manager.
  *
@@ -63,9 +63,9 @@ class Widget;
  *
  * @newin{3,96}
  */
-class LayoutManager : public Glib::Object
+class GTKMM_API LayoutManager : public Glib::Object
 {
-  _CLASS_GOBJECT(LayoutManager, GtkLayoutManager, GTK_LAYOUT_MANAGER, Glib::Object, GObject)
+  _CLASS_GOBJECT(LayoutManager, GtkLayoutManager, GTK_LAYOUT_MANAGER, Glib::Object, GObject, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/levelbar.hg b/gtk/src/levelbar.hg
index 4f3ae663..bed580de 100644
--- a/gtk/src/levelbar.hg
+++ b/gtk/src/levelbar.hg
@@ -52,14 +52,14 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,6}
  */
-class LevelBar
+class GTKMM_API LevelBar
 : public Widget,
   public Orientable
 {
-  _CLASS_GTKOBJECT(LevelBar, GtkLevelBar, GTK_LEVEL_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(LevelBar, GtkLevelBar, GTK_LEVEL_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
-  _WRAP_ENUM(Mode, GtkLevelBarMode)
+  _WRAP_ENUM(Mode, GtkLevelBarMode, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT()
   _IGNORE(gtk_level_bar_new)
diff --git a/gtk/src/linkbutton.hg b/gtk/src/linkbutton.hg
index eceea70a..b68f1d0f 100644
--- a/gtk/src/linkbutton.hg
+++ b/gtk/src/linkbutton.hg
@@ -42,9 +42,9 @@ namespace Gtk
  * @newin{2,10}
  * @ingroup Widgets
  */
-class LinkButton : public Button
+class GTKMM_API LinkButton : public Button
 {
-  _CLASS_GTKOBJECT(LinkButton, GtkLinkButton, GTK_LINK_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(LinkButton, GtkLinkButton, GTK_LINK_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
   explicit LinkButton(const Glib::ustring& uri);
diff --git a/gtk/src/listbox.hg b/gtk/src/listbox.hg
index ab8b6870..20a86505 100644
--- a/gtk/src/listbox.hg
+++ b/gtk/src/listbox.hg
@@ -54,9 +54,9 @@ class Adjustment;
  *
  * @newin{3,10}
  */
-class ListBox : public Widget
+class GTKMM_API ListBox : public Widget
 {
-  _CLASS_GTKOBJECT(ListBox, GtkListBox, GTK_LIST_BOX, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ListBox, GtkListBox, GTK_LIST_BOX, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/listboxrow.hg b/gtk/src/listboxrow.hg
index c6a8d415..84eb714d 100644
--- a/gtk/src/listboxrow.hg
+++ b/gtk/src/listboxrow.hg
@@ -30,9 +30,9 @@ namespace Gtk
  *
  * @newin{3,10}
  */
-class ListBoxRow : public Widget, public Actionable
+class GTKMM_API ListBoxRow : public Widget, public Actionable
 {
-  _CLASS_GTKOBJECT(ListBoxRow, GtkListBoxRow, GTK_LIST_BOX_ROW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ListBoxRow, GtkListBoxRow, GTK_LIST_BOX_ROW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Actionable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/liststore.hg b/gtk/src/liststore.hg
index 51929bfe..aed6b8a9 100644
--- a/gtk/src/liststore.hg
+++ b/gtk/src/liststore.hg
@@ -38,7 +38,7 @@ namespace Gtk
  * Gtk::TreeSortable interface so you can sort the list using the view.
  * Finally, it also implements the tree drag and drop interfaces.
  */
-class ListStore :
+class GTKMM_API ListStore :
   public Glib::Object,
   public TreeModel,
   public TreeSortable,
@@ -46,7 +46,7 @@ class ListStore :
   public TreeDragDest,
   public Buildable
 {
-  _CLASS_GOBJECT(ListStore, GtkListStore, GTK_LIST_STORE, Glib::Object, GObject)
+  _CLASS_GOBJECT(ListStore, GtkListStore, GTK_LIST_STORE, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(TreeModel)
   _IMPLEMENTS_INTERFACE(TreeSortable)
   _IMPLEMENTS_INTERFACE(TreeDragSource)
diff --git a/gtk/src/lockbutton.hg b/gtk/src/lockbutton.hg
index b9d8ac47..f605264b 100644
--- a/gtk/src/lockbutton.hg
+++ b/gtk/src/lockbutton.hg
@@ -60,9 +60,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,14}
  */
-class LockButton : public Button
+class GTKMM_API LockButton : public Button
 {
-  _CLASS_GTKOBJECT(LockButton, GtkLockButton, GTK_LOCK_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(LockButton, GtkLockButton, GTK_LOCK_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
 public:
 
   /** Create a new lock button.
diff --git a/gtk/src/main.hg b/gtk/src/main.hg
index 0b3682df..d1c5022c 100644
--- a/gtk/src/main.hg
+++ b/gtk/src/main.hg
@@ -16,6 +16,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <gtk/gtk.h>
 
 #include <sigc++/sigc++.h>
@@ -55,7 +57,7 @@ namespace Gtk
  *
  * @deprecated Use Gtk::Application instead.
  */
-class Main : public sigc::trackable
+class GTKMM_API Main : public sigc::trackable
 {
 public:
 
diff --git a/gtk/src/mediacontrols.hg b/gtk/src/mediacontrols.hg
index bcf5ef71..513eeb92 100644
--- a/gtk/src/mediacontrols.hg
+++ b/gtk/src/mediacontrols.hg
@@ -32,9 +32,9 @@ namespace Gtk
  *
  * @newin{3,94}
  */
-class MediaControls : public Widget
+class GTKMM_API MediaControls : public Widget
 {
-  _CLASS_GTKOBJECT(MediaControls, GtkMediaControls, GTK_MEDIA_CONTROLS, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(MediaControls, GtkMediaControls, GTK_MEDIA_CONTROLS, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:
diff --git a/gtk/src/mediafile.hg b/gtk/src/mediafile.hg
index fc0232d5..8ca91f61 100644
--- a/gtk/src/mediafile.hg
+++ b/gtk/src/mediafile.hg
@@ -21,8 +21,8 @@ _PINCLUDE(gtkmm/private/mediastream_p.h)
 
 namespace Gio
 {
-class File;
-class InputStream;
+class GTKMM_API File;
+class GTKMM_API InputStream;
 }
 
 namespace Gtk
@@ -42,9 +42,9 @@ namespace Gtk
  *
  * @newin{3,94}
  */
-class MediaFile : public Gtk::MediaStream
+class GTKMM_API MediaFile : public Gtk::MediaStream
 {
-  _CLASS_GOBJECT(MediaFile, GtkMediaFile, GTK_MEDIA_FILE, Gtk::MediaStream, GtkMediaStream)
+  _CLASS_GOBJECT(MediaFile, GtkMediaFile, GTK_MEDIA_FILE, Gtk::MediaStream, GtkMediaStream, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT()
diff --git a/gtk/src/mediastream.hg b/gtk/src/mediastream.hg
index 9d40af01..3c88a177 100644
--- a/gtk/src/mediastream.hg
+++ b/gtk/src/mediastream.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <gdkmm/paintable.h>
 #include <gdkmm/surface.h>
@@ -23,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Glib
 {
-class Error;
+class GTKMM_API Error;
 }
 
 namespace Gtk
@@ -48,9 +50,9 @@ namespace Gtk
  *
  * @newin{3,94}
  */
-class MediaStream : public Glib::Object, public Gdk::Paintable
+class GTKMM_API MediaStream : public Glib::Object, public Gdk::Paintable
 {
-  _CLASS_GOBJECT(MediaStream, GtkMediaStream, GTK_MEDIA_STREAM, Glib::Object, GObject)
+  _CLASS_GOBJECT(MediaStream, GtkMediaStream, GTK_MEDIA_STREAM, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gdk::Paintable)
 
 public:
diff --git a/gtk/src/menubutton.hg b/gtk/src/menubutton.hg
index a4bdcb8a..407c243d 100644
--- a/gtk/src/menubutton.hg
+++ b/gtk/src/menubutton.hg
@@ -38,9 +38,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,6}
  */
-class MenuButton : public Widget
+class GTKMM_API MenuButton : public Widget
 {
-  _CLASS_GTKOBJECT(MenuButton, GtkMenuButton, GTK_MENU_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(MenuButton, GtkMenuButton, GTK_MENU_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/messagedialog.hg b/gtk/src/messagedialog.hg
index 82405ee3..f8446de1 100644
--- a/gtk/src/messagedialog.hg
+++ b/gtk/src/messagedialog.hg
@@ -26,7 +26,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(ButtonsType, GtkButtonsType)
+_WRAP_ENUM(ButtonsType, GtkButtonsType, decl_prefix GTKMM_API)
 
 
 /** Convenient message window.
@@ -42,9 +42,9 @@ _WRAP_ENUM(ButtonsType, GtkButtonsType)
  *
  * @ingroup Dialogs
  */
-class MessageDialog : public Dialog
+class GTKMM_API MessageDialog : public Dialog
 {
-  _CLASS_GTKOBJECT(MessageDialog, GtkMessageDialog, GTK_MESSAGE_DIALOG, Gtk::Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(MessageDialog, GtkMessageDialog, GTK_MESSAGE_DIALOG, Gtk::Dialog, GtkDialog, , , 
GTKMM_API)
   _UNMANAGEABLE
 public:
   explicit MessageDialog(const Glib::ustring& message, bool use_markup = false, MessageType type = 
MessageType::INFO, ButtonsType buttons = ButtonsType::OK, bool modal = false);
diff --git a/gtk/src/native.hg b/gtk/src/native.hg
index 0441e1ea..b61b46e4 100644
--- a/gtk/src/native.hg
+++ b/gtk/src/native.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -29,12 +31,12 @@ typedef struct _GtkNativeInterface GtkNativeInterface;
 
 namespace Gdk
 {
-class Surface;
+class GTKMM_API Surface;
 }
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Interface for widgets having surfaces.
  *
@@ -46,9 +48,9 @@ class Widget;
  * @see Gtk::Root, Gtk::Window
  * @newin{3,96}
  */
-class Native : public Glib::Interface
+class GTKMM_API Native : public Glib::Interface
 {
-  _CLASS_INTERFACE(Native, GtkNative, GTK_NATIVE, GtkNativeInterface)
+  _CLASS_INTERFACE(Native, GtkNative, GTK_NATIVE, GtkNativeInterface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(static Widget* get_for_surface(const Glib::RefPtr<const Gdk::Surface>& surface),
diff --git a/gtk/src/nativedialog.hg b/gtk/src/nativedialog.hg
index 0344ac1b..b143158e 100644
--- a/gtk/src/nativedialog.hg
+++ b/gtk/src/nativedialog.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(gtkmm,gtk)
@@ -21,7 +23,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class Window;
+class GTKMM_API Window;
 
 /** Integrate with native dialogs.
  *
@@ -39,9 +41,9 @@ class Window;
  * @see Gtk::FileChooserNative, Gtk::Dialog
  * @newin{3,24}
  */
-class NativeDialog : public Glib::Object
+class GTKMM_API NativeDialog : public Glib::Object
 {
-  _CLASS_GOBJECT(NativeDialog, GtkNativeDialog, GTK_NATIVE_DIALOG, Glib::Object, GObject)
+  _CLASS_GOBJECT(NativeDialog, GtkNativeDialog, GTK_NATIVE_DIALOG, Glib::Object, GObject, , , GTKMM_API)
   _IGNORE(gtk_native_dialog_destroy)
 
 protected:
diff --git a/gtk/src/noselection.hg b/gtk/src/noselection.hg
index 4aae6fbd..63504d61 100644
--- a/gtk/src/noselection.hg
+++ b/gtk/src/noselection.hg
@@ -36,9 +36,9 @@ namespace Gtk
  * @see SelectionModel
  * @newin{3,96}
  */
-class NoSelection : public Glib::Object, public Gio::ListModel, public SelectionModel
+class GTKMM_API NoSelection : public Glib::Object, public Gio::ListModel, public SelectionModel
 {
-  _CLASS_GOBJECT(NoSelection, GtkNoSelection, GTK_NO_SELECTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(NoSelection, GtkNoSelection, GTK_NO_SELECTION, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gio::ListModel)
   _IMPLEMENTS_INTERFACE(SelectionModel)
   _STRUCT_NOT_HIDDEN
diff --git a/gtk/src/notebook.hg b/gtk/src/notebook.hg
index 1cc3bf02..656f1dfd 100644
--- a/gtk/src/notebook.hg
+++ b/gtk/src/notebook.hg
@@ -43,9 +43,9 @@ _CC_INCLUDE(gtk/gtk.h)
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Notebook : public Widget
+class GTKMM_API Notebook : public Widget
 {
-  _CLASS_GTKOBJECT(Notebook, GtkNotebook, GTK_NOTEBOOK, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Notebook, GtkNotebook, GTK_NOTEBOOK, Gtk::Widget, GtkWidget, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/notebookpage.hg b/gtk/src/notebookpage.hg
index 533c894c..dc1d6c7d 100644
--- a/gtk/src/notebookpage.hg
+++ b/gtk/src/notebookpage.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/refptr.h>
 
@@ -22,7 +24,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Holds properties of a Gtk::Notebook page.
  *
@@ -31,9 +33,9 @@ class Widget;
  * @see Notebook
  * @newin{3,96}
  */
-class NotebookPage : public Glib::Object
+class GTKMM_API NotebookPage : public Glib::Object
 {
-  _CLASS_GOBJECT(NotebookPage, GtkNotebookPage, GTK_NOTEBOOK_PAGE, Glib::Object, GObject)
+  _CLASS_GOBJECT(NotebookPage, GtkNotebookPage, GTK_NOTEBOOK_PAGE, Glib::Object, GObject, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Widget* get_child(), gtk_notebook_page_get_child)
diff --git a/gtk/src/orientable.hg b/gtk/src/orientable.hg
index 841d4edf..16a926cc 100644
--- a/gtk/src/orientable.hg
+++ b/gtk/src/orientable.hg
@@ -38,9 +38,9 @@ namespace Gtk
  *
  * @newin{2,16}
  */
-class Orientable : public Glib::Interface
+class GTKMM_API Orientable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Orientable, GtkOrientable, GTK_ORIENTABLE, GtkOrientableIface)
+  _CLASS_INTERFACE(Orientable, GtkOrientable, GTK_ORIENTABLE, GtkOrientableIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void set_orientation(Orientation orientation), gtk_orientable_set_orientation)
diff --git a/gtk/src/overlay.hg b/gtk/src/overlay.hg
index b171d257..200971b6 100644
--- a/gtk/src/overlay.hg
+++ b/gtk/src/overlay.hg
@@ -46,10 +46,10 @@ namespace Gtk
  * @newin{3,14}
  */
 
-class Overlay
+class GTKMM_API Overlay
   : public Widget
 {
-  _CLASS_GTKOBJECT(Overlay, GtkOverlay, GTK_OVERLAY, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Overlay, GtkOverlay, GTK_OVERLAY, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Creates a new Overlay.
diff --git a/gtk/src/padactionentry.hg b/gtk/src/padactionentry.hg
index edf657b5..f0e65f97 100644
--- a/gtk/src/padactionentry.hg
+++ b/gtk/src/padactionentry.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/ustring.h>
 
 _DEFS(gtkmm,gtk)
@@ -24,14 +26,14 @@ extern "C" { typedef struct _GtkPadActionEntry GtkPadActionEntry; }
 
 namespace Gtk
 {
-_WRAP_ENUM(PadActionType, GtkPadActionType)
+_WRAP_ENUM(PadActionType, GtkPadActionType, decl_prefix GTKMM_API)
 
 /** Class defining a pad action entry.
  *
  * @see Gtk::PadController
  * @newin{3,96}
  */
-class PadActionEntry
+class GTKMM_API PadActionEntry
 {
   _CLASS_GENERIC(PadActionEntry, GtkPadActionEntry)
 public:
diff --git a/gtk/src/padcontroller.hg b/gtk/src/padcontroller.hg
index 6daf094f..29b658bb 100644
--- a/gtk/src/padcontroller.hg
+++ b/gtk/src/padcontroller.hg
@@ -74,9 +74,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class PadController : public EventController
+class GTKMM_API PadController : public EventController
 {
-  _CLASS_GOBJECT(PadController, GtkPadController, GTK_PAD_CONTROLLER, EventController, GtkEventController)
+  _CLASS_GOBJECT(PadController, GtkPadController, GTK_PAD_CONTROLLER, EventController, GtkEventController, , 
, GTKMM_API)
 
 protected:
   explicit PadController(const Glib::RefPtr<Gio::ActionGroup>& action_group,
diff --git a/gtk/src/pagesetup.hg b/gtk/src/pagesetup.hg
index df42a833..5630d337 100644
--- a/gtk/src/pagesetup.hg
+++ b/gtk/src/pagesetup.hg
@@ -40,9 +40,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PageSetup : public Glib::Object
+class GTKMM_API PageSetup : public Glib::Object
 {
-  _CLASS_GOBJECT(PageSetup, GtkPageSetup, GTK_PAGE_SETUP, Glib::Object, GObject)
+  _CLASS_GOBJECT(PageSetup, GtkPageSetup, GTK_PAGE_SETUP, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/pagesetupunixdialog.hg b/gtk/src/pagesetupunixdialog.hg
index d9157afb..f50ed138 100644
--- a/gtk/src/pagesetupunixdialog.hg
+++ b/gtk/src/pagesetupunixdialog.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PageSetupUnixDialog : public Dialog
+class GTKMM_API PageSetupUnixDialog : public Dialog
 {
-  _CLASS_GTKOBJECT(PageSetupUnixDialog, GtkPageSetupUnixDialog, GTK_PAGE_SETUP_UNIX_DIALOG, Gtk::Dialog, 
GtkDialog)
+  _CLASS_GTKOBJECT(PageSetupUnixDialog, GtkPageSetupUnixDialog, GTK_PAGE_SETUP_UNIX_DIALOG, Gtk::Dialog, 
GtkDialog, , , GTKMM_API)
   _UNMANAGEABLE
   _GTKMMPROC_WIN32_NO_WRAP
 
diff --git a/gtk/src/paned.hg b/gtk/src/paned.hg
index 373aeb0a..0f911b0c 100644
--- a/gtk/src/paned.hg
+++ b/gtk/src/paned.hg
@@ -58,11 +58,11 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Paned
+class GTKMM_API Paned
  : public Widget,
    public Orientable
 {
-  _CLASS_GTKOBJECT(Paned, GtkPaned, GTK_PANED, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Paned, GtkPaned, GTK_PANED, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/papersize.hg b/gtk/src/papersize.hg
index 266bf854..514b8de5 100644
--- a/gtk/src/papersize.hg
+++ b/gtk/src/papersize.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 _DEFS(gtkmm,gtk)
 
 #include <glibmm/keyfile.h>
@@ -30,15 +32,15 @@ struct PaperSizeTraits;
 
 /** Common paper names, from PWG 5101.1-2002 PWG: Standard for Media Standardized Names
  */
-extern const Glib::ustring PAPER_NAME_A3;
-extern const Glib::ustring PAPER_NAME_A4;
-extern const Glib::ustring PAPER_NAME_A5;
-extern const Glib::ustring PAPER_NAME_B5;
-extern const Glib::ustring PAPER_NAME_LETTER;
-extern const Glib::ustring PAPER_NAME_EXECUTIVE;
-extern const Glib::ustring PAPER_NAME_LEGAL;
+extern GTKMM_API const Glib::ustring PAPER_NAME_A3;
+extern GTKMM_API const Glib::ustring PAPER_NAME_A4;
+extern GTKMM_API const Glib::ustring PAPER_NAME_A5;
+extern GTKMM_API const Glib::ustring PAPER_NAME_B5;
+extern GTKMM_API const Glib::ustring PAPER_NAME_LETTER;
+extern GTKMM_API const Glib::ustring PAPER_NAME_EXECUTIVE;
+extern GTKMM_API const Glib::ustring PAPER_NAME_LEGAL;
 
-_WRAP_ENUM(Unit, GtkUnit)
+_WRAP_ENUM(Unit, GtkUnit, decl_prefix GTKMM_API)
 
 /** PaperSize handles paper sizes. It uses the standard called "PWG 5101.1-2002 PWG: Standard for Media 
Standardized Names"
  * to name the paper sizes (and to get the data for the page sizes). In addition to standard paper sizes, 
PaperSize allows
@@ -51,10 +53,10 @@ _WRAP_ENUM(Unit, GtkUnit)
  *
  * @ingroup Printing
  */
-class PaperSize
+class GTKMM_API PaperSize
 {
   // Cannot pass the _new function here, it must accept the 'name' argument.
-  _CLASS_BOXEDTYPE(PaperSize, GtkPaperSize, NONE, gtk_paper_size_copy, gtk_paper_size_free)
+  _CLASS_BOXEDTYPE(PaperSize, GtkPaperSize, NONE, gtk_paper_size_copy, gtk_paper_size_free, GTKMM_API)
 public:
 
   // We don't use a "" default parameter value, though gtk_paper_size_new() can take NULL,
diff --git a/gtk/src/passwordentry.hg b/gtk/src/passwordentry.hg
index de740185..ee2a3cef 100644
--- a/gtk/src/passwordentry.hg
+++ b/gtk/src/passwordentry.hg
@@ -39,9 +39,9 @@ namespace Gtk
  * @newin{3,96}
  * @ingroup Widgets
  */
-class PasswordEntry : public Widget, public Editable
+class GTKMM_API PasswordEntry : public Widget, public Editable
 {
-  _CLASS_GTKOBJECT(PasswordEntry, GtkPasswordEntry, GTK_PASSWORD_ENTRY, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(PasswordEntry, GtkPasswordEntry, GTK_PASSWORD_ENTRY, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(Editable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/picture.hg b/gtk/src/picture.hg
index 392f6f1b..e1817bdd 100644
--- a/gtk/src/picture.hg
+++ b/gtk/src/picture.hg
@@ -47,9 +47,9 @@ _CC_INCLUDE(gtk/gtk.h)
  *
  * @ingroup Widgets
  */
-class Picture : public Widget
+class GTKMM_API Picture : public Widget
 {
-  _CLASS_GTKOBJECT(Picture, GtkPicture, GTK_PICTURE, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Picture, GtkPicture, GTK_PICTURE, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:
diff --git a/gtk/src/popover.hg b/gtk/src/popover.hg
index 13d0d41d..fcfefc57 100644
--- a/gtk/src/popover.hg
+++ b/gtk/src/popover.hg
@@ -47,13 +47,13 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,12}
  */
-class Popover : public Widget, public ShortcutManager, public Native
+class GTKMM_API Popover : public Widget, public ShortcutManager, public Native
 {
-  _CLASS_GTKOBJECT(Popover, GtkPopover, GTK_POPOVER, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Popover, GtkPopover, GTK_POPOVER, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(ShortcutManager)
   _IMPLEMENTS_INTERFACE(Native)
 public:
-  _WRAP_ENUM(Constraint, GtkPopoverConstraint)
+  _WRAP_ENUM(Constraint, GtkPopoverConstraint, decl_prefix GTKMM_API)
 
   _CTOR_DEFAULT
 
diff --git a/gtk/src/popovermenu.hg b/gtk/src/popovermenu.hg
index 887aaf65..166e1474 100644
--- a/gtk/src/popovermenu.hg
+++ b/gtk/src/popovermenu.hg
@@ -50,12 +50,12 @@ namespace Gtk
  * @ingroup Containers
  * @ingroup Menus
  */
-class PopoverMenu : public Popover
+class GTKMM_API PopoverMenu : public Popover
 {
-  _CLASS_GTKOBJECT(PopoverMenu, GtkPopoverMenu, GTK_POPOVER_MENU, Gtk::Popover, GtkPopover)
+  _CLASS_GTKOBJECT(PopoverMenu, GtkPopoverMenu, GTK_POPOVER_MENU, Gtk::Popover, GtkPopover, , , GTKMM_API)
 
 public:
-  _WRAP_ENUM(Flags, GtkPopoverMenuFlags)
+  _WRAP_ENUM(Flags, GtkPopoverMenuFlags, decl_prefix GTKMM_API)
 
   //This is custom-implemented because the gtk_popover_menu_new_from_model() does more
   //than just call g_object_new().
diff --git a/gtk/src/popovermenubar.hg b/gtk/src/popovermenubar.hg
index 0611ca5f..add7b941 100644
--- a/gtk/src/popovermenubar.hg
+++ b/gtk/src/popovermenubar.hg
@@ -37,9 +37,9 @@ namespace Gtk
  * @ingroup Containers
  * @ingroup Menus
  */
-class PopoverMenuBar : public Widget
+class GTKMM_API PopoverMenuBar : public Widget
 {
-  _CLASS_GTKOBJECT(PopoverMenuBar, GtkPopoverMenuBar, GTK_POPOVER_MENU_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(PopoverMenuBar, GtkPopoverMenuBar, GTK_POPOVER_MENU_BAR, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
 
 public:
   _WRAP_CTOR(PopoverMenuBar(const Glib::RefPtr<Gio::MenuModel>& menu_model = {}), 
gtk_popover_menu_bar_new_from_model)
diff --git a/gtk/src/printcontext.hg b/gtk/src/printcontext.hg
index a3bebe2e..ba077648 100644
--- a/gtk/src/printcontext.hg
+++ b/gtk/src/printcontext.hg
@@ -44,9 +44,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PrintContext : public Glib::Object
+class GTKMM_API PrintContext : public Glib::Object
 {
-  _CLASS_GOBJECT(PrintContext, GtkPrintContext, GTK_PRINT_CONTEXT, Glib::Object, GObject)
+  _CLASS_GOBJECT(PrintContext, GtkPrintContext, GTK_PRINT_CONTEXT, Glib::Object, GObject, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/printer.hg b/gtk/src/printer.hg
index 324fd6bc..14abbe75 100644
--- a/gtk/src/printer.hg
+++ b/gtk/src/printer.hg
@@ -24,9 +24,9 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class PaperSize;
+class GTKMM_API PaperSize;
 
-_WRAP_ENUM(PrintCapabilities, GtkPrintCapabilities)
+_WRAP_ENUM(PrintCapabilities, GtkPrintCapabilities, decl_prefix GTKMM_API)
 
 /** A Printer object represents a printer. You only need to deal directly with printers if you use the
  * non-portable PrintUnixDialog API.
@@ -39,9 +39,9 @@ _WRAP_ENUM(PrintCapabilities, GtkPrintCapabilities)
  *
  * @ingroup Printing
  */
-class Printer : public Glib::Object
+class GTKMM_API Printer : public Glib::Object
 {
-  _CLASS_GOBJECT(Printer, GtkPrinter, GTK_PRINTER, Glib::Object, GObject)
+  _CLASS_GOBJECT(Printer, GtkPrinter, GTK_PRINTER, Glib::Object, GObject, , , GTKMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 public:
@@ -126,6 +126,7 @@ typedef sigc::slot<bool(const Glib::RefPtr<Printer>&)> SlotPrinterEnumerator;
  *
  * @relates Gtk::Printer
  */
+GTKMM_API
 void enumerate_printers(const SlotPrinterEnumerator& slot, bool wait = true);
 
 } // namespace Gtk
diff --git a/gtk/src/printjob.hg b/gtk/src/printjob.hg
index 34aea435..76b17296 100644
--- a/gtk/src/printjob.hg
+++ b/gtk/src/printjob.hg
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PrintJob : public Glib::Object
+class GTKMM_API PrintJob : public Glib::Object
 {
-  _CLASS_GOBJECT(PrintJob, GtkPrintJob, GTK_PRINT_JOB, Glib::Object, GObject)
+  _CLASS_GOBJECT(PrintJob, GtkPrintJob, GTK_PRINT_JOB, Glib::Object, GObject, , , GTKMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gtk/src/printoperation.hg b/gtk/src/printoperation.hg
index 943a7f05..9e464930 100644
--- a/gtk/src/printoperation.hg
+++ b/gtk/src/printoperation.hg
@@ -30,8 +30,8 @@ _PINCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(PrintStatus, GtkPrintStatus)
-_WRAP_GERROR(PrintError, GtkPrintError, GTK_PRINT_ERROR)
+_WRAP_ENUM(PrintStatus, GtkPrintStatus, decl_prefix GTKMM_API)
+_WRAP_GERROR(PrintError, GtkPrintError, GTK_PRINT_ERROR, decl_prefix GTKMM_API, decl_prefix GTKMM_API)
 
 /** @defgroup Printing Printing
  */
@@ -54,11 +54,11 @@ _WRAP_GERROR(PrintError, GtkPrintError, GTK_PRINT_ERROR)
  *
  * @ingroup Printing
  */
-class PrintOperation :
+class GTKMM_API PrintOperation :
   public Glib::Object,
   public PrintOperationPreview
 {
-  _CLASS_GOBJECT(PrintOperation, GtkPrintOperation, GTK_PRINT_OPERATION, Glib::Object, GObject)
+  _CLASS_GOBJECT(PrintOperation, GtkPrintOperation, GTK_PRINT_OPERATION, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(PrintOperationPreview)
 
 protected:
@@ -66,8 +66,8 @@ protected:
   _CTOR_DEFAULT
 
 public:
-  _WRAP_ENUM(Result, GtkPrintOperationResult)
-  _WRAP_ENUM(Action, GtkPrintOperationAction)
+  _WRAP_ENUM(Result, GtkPrintOperationResult, decl_prefix GTKMM_API)
+  _WRAP_ENUM(Action, GtkPrintOperationAction, decl_prefix GTKMM_API)
 
   _WRAP_CREATE()
 
@@ -197,6 +197,7 @@ public:
    *
    * @since 2.10
    */
+  GTKMM_API
   Glib::RefPtr<PageSetup> run_page_setup_dialog(Window& parent,
                                                 const Glib::RefPtr<const PageSetup>& page_setup,
                                                 const Glib::RefPtr<const PrintSettings>& print_settings);
@@ -214,6 +215,7 @@ public:
    *
    * @since 2.22
    */
+  GTKMM_API
   Glib::RefPtr<PageSetup> run_page_setup_dialog(Window& parent,
                                                 const Glib::RefPtr<const PrintSettings>& print_settings);
 
@@ -236,6 +238,7 @@ public:
    *
    * @since 2.10
    */
+  GTKMM_API
   void run_page_setup_dialog_async(Window& parent,
                                    const Glib::RefPtr<const PageSetup>& page_setup,
                                    const Glib::RefPtr<const PrintSettings>& print_settings,
@@ -254,6 +257,7 @@ public:
    *
    * @since 2.22
    */
+  GTKMM_API
   void run_page_setup_dialog_async(Window& parent,
                                    const Glib::RefPtr<const PrintSettings>& print_settings,
                                    const SlotPrintSetupDone& slot);
diff --git a/gtk/src/printoperationpreview.hg b/gtk/src/printoperationpreview.hg
index 34379a83..e71cabbb 100644
--- a/gtk/src/printoperationpreview.hg
+++ b/gtk/src/printoperationpreview.hg
@@ -40,9 +40,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PrintOperationPreview : public Glib::Interface
+class GTKMM_API PrintOperationPreview : public Glib::Interface
 {
-  _CLASS_INTERFACE(PrintOperationPreview, GtkPrintOperationPreview, GTK_PRINT_OPERATION_PREVIEW, 
GtkPrintOperationPreviewIface)
+  _CLASS_INTERFACE(PrintOperationPreview, GtkPrintOperationPreview, GTK_PRINT_OPERATION_PREVIEW, 
GtkPrintOperationPreviewIface, , , GTKMM_API)
 public:
 
   _WRAP_METHOD(void render_page(int page_nr), gtk_print_operation_preview_render_page)
diff --git a/gtk/src/printsettings.hg b/gtk/src/printsettings.hg
index e1d4f82a..dc554bc6 100644
--- a/gtk/src/printsettings.hg
+++ b/gtk/src/printsettings.hg
@@ -27,15 +27,15 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(PrintDuplex, GtkPrintDuplex)
-_WRAP_ENUM(PrintQuality, GtkPrintQuality)
-_WRAP_ENUM(PrintPages, GtkPrintPages)
-_WRAP_ENUM(PageSet, GtkPageSet)
-_WRAP_ENUM(NumberUpLayout, GtkNumberUpLayout)
+_WRAP_ENUM(PrintDuplex, GtkPrintDuplex, decl_prefix GTKMM_API)
+_WRAP_ENUM(PrintQuality, GtkPrintQuality, decl_prefix GTKMM_API)
+_WRAP_ENUM(PrintPages, GtkPrintPages, decl_prefix GTKMM_API)
+_WRAP_ENUM(PageSet, GtkPageSet, decl_prefix GTKMM_API)
+_WRAP_ENUM(NumberUpLayout, GtkNumberUpLayout, decl_prefix GTKMM_API)
 
 /** A page range.
  */
-class PageRange
+class GTKMM_API PageRange
 {
 public:
   PageRange();
@@ -72,9 +72,9 @@ struct PageRangeTraits
  *
  * @ingroup Printing
  */
-class PrintSettings : public Glib::Object
+class GTKMM_API PrintSettings : public Glib::Object
 {
-  _CLASS_GOBJECT(PrintSettings, GtkPrintSettings, GTK_PRINT_SETTINGS, Glib::Object, GObject)
+  _CLASS_GOBJECT(PrintSettings, GtkPrintSettings, GTK_PRINT_SETTINGS, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/printunixdialog.hg b/gtk/src/printunixdialog.hg
index edccc883..94325156 100644
--- a/gtk/src/printunixdialog.hg
+++ b/gtk/src/printunixdialog.hg
@@ -46,9 +46,9 @@ namespace Gtk
  *
  * @ingroup Printing
  */
-class PrintUnixDialog : public Dialog
+class GTKMM_API PrintUnixDialog : public Dialog
 {
-  _CLASS_GTKOBJECT(PrintUnixDialog, GtkPrintUnixDialog, GTK_PRINT_UNIX_DIALOG, Gtk::Dialog, GtkDialog)
+  _CLASS_GTKOBJECT(PrintUnixDialog, GtkPrintUnixDialog, GTK_PRINT_UNIX_DIALOG, Gtk::Dialog, GtkDialog, , , 
GTKMM_API)
   _UNMANAGEABLE
   _GTKMMPROC_WIN32_NO_WRAP
 
diff --git a/gtk/src/progressbar.hg b/gtk/src/progressbar.hg
index 5d5417c5..3027490e 100644
--- a/gtk/src/progressbar.hg
+++ b/gtk/src/progressbar.hg
@@ -59,11 +59,11 @@ _CC_INCLUDE(gtk/gtk.h)
  *
  * @ingroup Widgets
  */
-class ProgressBar
+class GTKMM_API ProgressBar
  : public Widget,
    public Orientable
 {
-  _CLASS_GTKOBJECT(ProgressBar,GtkProgressBar,GTK_PROGRESS_BAR,Gtk::Widget,GtkWidget,GtkProgressBar)
+  _CLASS_GTKOBJECT(ProgressBar,GtkProgressBar,GTK_PROGRESS_BAR,Gtk::Widget,GtkWidget,GtkProgressBar, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/radiobutton.hg b/gtk/src/radiobutton.hg
index a48df7c1..82aee28e 100644
--- a/gtk/src/radiobutton.hg
+++ b/gtk/src/radiobutton.hg
@@ -46,9 +46,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class RadioButton : public CheckButton
+class GTKMM_API RadioButton : public CheckButton
 {
-  _CLASS_GTKOBJECT(RadioButton,GtkRadioButton,GTK_RADIO_BUTTON,Gtk::CheckButton,GtkCheckButton)
+  _CLASS_GTKOBJECT(RadioButton,GtkRadioButton,GTK_RADIO_BUTTON,Gtk::CheckButton,GtkCheckButton, , , 
GTKMM_API)
   _IGNORE(gtk_radio_button_new_from_widget, gtk_radio_button_new_with_mnemonic_from_widget, 
gtk_radio_button_new_with_label_from_widget)
 public:
   using Group = RadioButtonGroup;
diff --git a/gtk/src/range.hg b/gtk/src/range.hg
index 74c17876..c7ac9c71 100644
--- a/gtk/src/range.hg
+++ b/gtk/src/range.hg
@@ -27,17 +27,17 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 namespace Gtk
 {
 
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /** Base class for widgets which visualize an adjustment.
  *
  * @ingroup Widgets
  */
-class Range
+class GTKMM_API Range
 : public Widget,
   public Orientable
 {
-  _CLASS_GTKOBJECT(Range,GtkRange,GTK_RANGE,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Range,GtkRange,GTK_RANGE,Gtk::Widget,GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/recentinfo.hg b/gtk/src/recentinfo.hg
index bbf207cd..57354997 100644
--- a/gtk/src/recentinfo.hg
+++ b/gtk/src/recentinfo.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <vector>
 
 #include <giomm/icon.h>
@@ -41,9 +43,9 @@ namespace Gtk
  *
  * @ingroup RecentFiles
  */
-class RecentInfo final
+class GTKMM_API RecentInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(RecentInfo, GtkRecentInfo, NONE, gtk_recent_info_ref, gtk_recent_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(RecentInfo, GtkRecentInfo, NONE, gtk_recent_info_ref, gtk_recent_info_unref, 
GTKMM_API)
   _IGNORE(gtk_recent_info_ref, gtk_recent_info_unref)
 public:
 
@@ -128,7 +130,7 @@ namespace Glib
 // This is needed so Glib::RefPtr<Gtk::RecentInfo> can be used with
 // Glib::Value and Gtk::TreeModelColumn:
 template <>
-class Value< Glib::RefPtr<Gtk::RecentInfo> > : public ValueBase_Boxed
+class GTKMM_API Value< Glib::RefPtr<Gtk::RecentInfo> > : public ValueBase_Boxed
 {
 public:
   typedef Glib::RefPtr<Gtk::RecentInfo> CppType;
diff --git a/gtk/src/recentmanager.hg b/gtk/src/recentmanager.hg
index 356dfa98..784404fd 100644
--- a/gtk/src/recentmanager.hg
+++ b/gtk/src/recentmanager.hg
@@ -30,7 +30,7 @@ namespace Gtk
 
 /** Exception class for Gtk::RecentManager errors.
  */
-_WRAP_GERROR(RecentManagerError, GtkRecentManagerError, GTK_RECENT_MANAGER_ERROR)
+_WRAP_GERROR(RecentManagerError, GtkRecentManagerError, GTK_RECENT_MANAGER_ERROR, decl_prefix GTKMM_API)
 
 /** @defgroup RecentFiles RecentFiles
  */
@@ -52,9 +52,9 @@ _WRAP_GERROR(RecentManagerError, GtkRecentManagerError, GTK_RECENT_MANAGER_ERROR
  *
  * @ingroup RecentFiles
  */
-class RecentManager : public Glib::Object
+class GTKMM_API RecentManager : public Glib::Object
 {
-  _CLASS_GOBJECT(RecentManager, GtkRecentManager, GTK_RECENT_MANAGER, Glib::Object, GObject)
+  _CLASS_GOBJECT(RecentManager, GtkRecentManager, GTK_RECENT_MANAGER, Glib::Object, GObject, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/requisition.hg b/gtk/src/requisition.hg
index 94486cd7..aaa9a07e 100644
--- a/gtk/src/requisition.hg
+++ b/gtk/src/requisition.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <gtk/gtk.h> //TODO: Remove when we wrap it properly.
 _DEFS(gtkmm,gtk)
 
diff --git a/gtk/src/revealer.hg b/gtk/src/revealer.hg
index 452a3f60..c652652c 100644
--- a/gtk/src/revealer.hg
+++ b/gtk/src/revealer.hg
@@ -34,10 +34,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,10}
  */
-class Revealer
+class GTKMM_API Revealer
   : public Widget
 {
-  _CLASS_GTKOBJECT(Revealer, GtkRevealer, GTK_REVEALER, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Revealer, GtkRevealer, GTK_REVEALER, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Create Gtk::Revealer widget.
diff --git a/gtk/src/root.hg b/gtk/src/root.hg
index 095ee128..9e4dafd4 100644
--- a/gtk/src/root.hg
+++ b/gtk/src/root.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -28,13 +30,13 @@ typedef struct _GtkRootInterface GtkRootInterface;
 
 namespace Gdk
 {
-class Display;
-class Surface;
+class GTKMM_API Display;
+class GTKMM_API Surface;
 }
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Interface for root widgets.
  *
@@ -48,9 +50,9 @@ class Widget;
  * @see Gtk::Window
  * @newin{3,96}
  */
-class Root : public Glib::Interface
+class GTKMM_API Root : public Glib::Interface
 {
-  _CLASS_INTERFACE(Root, GtkRoot, GTK_ROOT, GtkRootInterface)
+  _CLASS_INTERFACE(Root, GtkRoot, GTK_ROOT, GtkRootInterface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Glib::RefPtr<Gdk::Display> get_display(), gtk_root_get_display, refreturn)
diff --git a/gtk/src/scale.hg b/gtk/src/scale.hg
index 52067e5d..6eadd69f 100644
--- a/gtk/src/scale.hg
+++ b/gtk/src/scale.hg
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Scale : public Range
+class GTKMM_API Scale : public Range
 {
-  _CLASS_GTKOBJECT(Scale,GtkScale,GTK_SCALE,Gtk::Range,GtkRange)
+  _CLASS_GTKOBJECT(Scale,GtkScale,GTK_SCALE,Gtk::Range,GtkRange, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT()
diff --git a/gtk/src/scalebutton.hg b/gtk/src/scalebutton.hg
index 8bf86ada..4e968e41 100644
--- a/gtk/src/scalebutton.hg
+++ b/gtk/src/scalebutton.hg
@@ -39,11 +39,11 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{2,12}
  */
-class ScaleButton
+class GTKMM_API ScaleButton
  : public Widget,
    public Orientable
 {
-  _CLASS_GTKOBJECT(ScaleButton, GtkScaleButton, GTK_SCALE_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ScaleButton, GtkScaleButton, GTK_SCALE_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/scrollable.hg b/gtk/src/scrollable.hg
index c14d9996..aef719de 100644
--- a/gtk/src/scrollable.hg
+++ b/gtk/src/scrollable.hg
@@ -37,12 +37,12 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class Scrollable : public Glib::Interface
+class GTKMM_API Scrollable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Scrollable, GtkScrollable, GTK_SCROLLABLE, GtkScrollableInterface)
+  _CLASS_INTERFACE(Scrollable, GtkScrollable, GTK_SCROLLABLE, GtkScrollableInterface, , , GTKMM_API)
 
 public:
-  _WRAP_ENUM(Policy, GtkScrollablePolicy)
+  _WRAP_ENUM(Policy, GtkScrollablePolicy, decl_prefix GTKMM_API)
 
   _WRAP_METHOD(Glib::RefPtr<Adjustment> get_hadjustment(), gtk_scrollable_get_hadjustment, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Adjustment> get_hadjustment() const, gtk_scrollable_get_hadjustment, 
refreturn, constversion)
diff --git a/gtk/src/scrollbar.hg b/gtk/src/scrollbar.hg
index 868219b9..5ad4734c 100644
--- a/gtk/src/scrollbar.hg
+++ b/gtk/src/scrollbar.hg
@@ -24,7 +24,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 
 namespace Gtk
 {
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /** A %Scrollbar.
  *
@@ -42,9 +42,9 @@ class Adjustment;
  *
  * @ingroup Widgets
  */
-class Scrollbar : public Widget, public Orientable
+class GTKMM_API Scrollbar : public Widget, public Orientable
 {
-  _CLASS_GTKOBJECT(Scrollbar, GtkScrollbar, GTK_SCROLLBAR,Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Scrollbar, GtkScrollbar, GTK_SCROLLBAR,Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/scrolledwindow.hg b/gtk/src/scrolledwindow.hg
index 1f7c4ff1..8811640d 100644
--- a/gtk/src/scrolledwindow.hg
+++ b/gtk/src/scrolledwindow.hg
@@ -45,9 +45,9 @@ class Scrollbar;
  * @ingroup Widgets
  * @ingroup Containers
  */
-class ScrolledWindow : public Widget
+class GTKMM_API ScrolledWindow : public Widget
 {
-  _CLASS_GTKOBJECT(ScrolledWindow, GtkScrolledWindow, GTK_SCROLLED_WINDOW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ScrolledWindow, GtkScrolledWindow, GTK_SCROLLED_WINDOW, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/searchbar.hg b/gtk/src/searchbar.hg
index 11db7e8d..5a1ce21e 100644
--- a/gtk/src/searchbar.hg
+++ b/gtk/src/searchbar.hg
@@ -44,10 +44,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,10}
  */
-class SearchBar
+class GTKMM_API SearchBar
   : public Widget
 {
-  _CLASS_GTKOBJECT(SearchBar, GtkSearchBar, GTK_SEARCH_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(SearchBar, GtkSearchBar, GTK_SEARCH_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   /** Creates a Gtk::SearchBar.
diff --git a/gtk/src/searchentry.hg b/gtk/src/searchentry.hg
index f5ba9e24..8212f05b 100644
--- a/gtk/src/searchentry.hg
+++ b/gtk/src/searchentry.hg
@@ -53,10 +53,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,6}
  */
-class SearchEntry
+class GTKMM_API SearchEntry
 : public Entry
 {
-  _CLASS_GTKOBJECT(SearchEntry, GtkSearchEntry, GTK_SEARCH_ENTRY, Gtk::Entry, GtkEntry)
+  _CLASS_GTKOBJECT(SearchEntry, GtkSearchEntry, GTK_SEARCH_ENTRY, Gtk::Entry, GtkEntry, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/selectionmodel.hg b/gtk/src/selectionmodel.hg
index 72a616a3..d6834ca8 100644
--- a/gtk/src/selectionmodel.hg
+++ b/gtk/src/selectionmodel.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -64,9 +66,9 @@ namespace Gtk
  * @see Gio::ListModel, Gtk::SingleSelection
  * @newin{3,96}
  */
-class SelectionModel : public Glib::Interface
+class GTKMM_API SelectionModel : public Glib::Interface
 {
-  _CLASS_INTERFACE(SelectionModel, GtkSelectionModel, GTK_SELECTION_MODEL, GtkSelectionModelInterface)
+  _CLASS_INTERFACE(SelectionModel, GtkSelectionModel, GTK_SELECTION_MODEL, GtkSelectionModelInterface, , , 
GTKMM_API)
 
 public:
   _WRAP_METHOD(bool is_selected(guint position) const, gtk_selection_model_is_selected)
diff --git a/gtk/src/separator.hg b/gtk/src/separator.hg
index f34de3a7..9e55edfe 100644
--- a/gtk/src/separator.hg
+++ b/gtk/src/separator.hg
@@ -33,11 +33,11 @@ namespace Gtk
  * window. It displays a line with a shadow to make it appear sunken into the
  * interface.
  */
-class Separator
+class GTKMM_API Separator
  : public Widget,
    public Orientable
 {
-  _CLASS_GTKOBJECT(Separator,GtkSeparator,GTK_SEPARATOR,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Separator,GtkSeparator,GTK_SEPARATOR,Gtk::Widget,GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
 
diff --git a/gtk/src/settings.hg b/gtk/src/settings.hg
index 60aeea68..f99d96ff 100644
--- a/gtk/src/settings.hg
+++ b/gtk/src/settings.hg
@@ -29,9 +29,9 @@ namespace Gtk
 /** Sharing settings between applications.
  *
  */
-class Settings : public Glib::Object, public StyleProvider
+class GTKMM_API Settings : public Glib::Object, public StyleProvider
 {
-  _CLASS_GOBJECT(Settings, GtkSettings, GTK_SETTINGS, Glib::Object, GObject)
+  _CLASS_GOBJECT(Settings, GtkSettings, GTK_SETTINGS, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(StyleProvider)
 
 public:
diff --git a/gtk/src/shortcutcontroller.hg b/gtk/src/shortcutcontroller.hg
index 3e4104d2..35f74be2 100644
--- a/gtk/src/shortcutcontroller.hg
+++ b/gtk/src/shortcutcontroller.hg
@@ -66,10 +66,10 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class ShortcutController : public EventController, public Gio::ListModel, public Buildable
+class GTKMM_API ShortcutController : public EventController, public Gio::ListModel, public Buildable
 {
   _CLASS_GOBJECT(ShortcutController, GtkShortcutController, GTK_SHORTCUT_CONTROLLER,
-    EventController, GtkEventController)
+    EventController, GtkEventController, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gio::ListModel)
   _IMPLEMENTS_INTERFACE(Buildable)
 
diff --git a/gtk/src/shortcutlabel.hg b/gtk/src/shortcutlabel.hg
index 7b9be4b9..38981b7b 100644
--- a/gtk/src/shortcutlabel.hg
+++ b/gtk/src/shortcutlabel.hg
@@ -32,9 +32,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ShortcutLabel : public Widget
+class GTKMM_API ShortcutLabel : public Widget
 {
-  _CLASS_GTKOBJECT(ShortcutLabel, GtkShortcutLabel, GTK_SHORTCUT_LABEL, Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ShortcutLabel, GtkShortcutLabel, GTK_SHORTCUT_LABEL, Widget, GtkWidget, , , GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/shortcutmanager.hg b/gtk/src/shortcutmanager.hg
index f2ce5254..89646634 100644
--- a/gtk/src/shortcutmanager.hg
+++ b/gtk/src/shortcutmanager.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(gtkmm,gtk)
@@ -29,7 +31,7 @@ typedef struct _GtkShortcutManagerInterface GtkShortcutManagerInterface;
 
 namespace Gtk
 {
-class ShortcutController;
+class GTKMM_API ShortcutController;
 
 /** Interface for managing shortcuts.
  *
@@ -45,9 +47,9 @@ class ShortcutController;
  *
  * @newin{3,98}
  */
-class ShortcutManager : public Glib::Interface
+class GTKMM_API ShortcutManager : public Glib::Interface
 {
-  _CLASS_INTERFACE(ShortcutManager, GtkShortcutManager, GTK_SHORTCUT_MANAGER, GtkShortcutManagerInterface)
+  _CLASS_INTERFACE(ShortcutManager, GtkShortcutManager, GTK_SHORTCUT_MANAGER, GtkShortcutManagerInterface, , 
, GTKMM_API)
 
 public:
 
diff --git a/gtk/src/shortcutsgroup.hg b/gtk/src/shortcutsgroup.hg
index 2f3360d4..b74955aa 100644
--- a/gtk/src/shortcutsgroup.hg
+++ b/gtk/src/shortcutsgroup.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ShortcutsGroup : public Box
+class GTKMM_API ShortcutsGroup : public Box
 {
-  _CLASS_GTKOBJECT(ShortcutsGroup, GtkShortcutsGroup, GTK_SHORTCUTS_GROUP, Box, GtkBox)
+  _CLASS_GTKOBJECT(ShortcutsGroup, GtkShortcutsGroup, GTK_SHORTCUTS_GROUP, Box, GtkBox, , , GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/shortcutssection.hg b/gtk/src/shortcutssection.hg
index 51b8d2d7..550d1868 100644
--- a/gtk/src/shortcutssection.hg
+++ b/gtk/src/shortcutssection.hg
@@ -38,9 +38,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ShortcutsSection : public Box
+class GTKMM_API ShortcutsSection : public Box
 {
-  _CLASS_GTKOBJECT(ShortcutsSection, GtkShortcutsSection, GTK_SHORTCUTS_SECTION, Box, GtkBox)
+  _CLASS_GTKOBJECT(ShortcutsSection, GtkShortcutsSection, GTK_SHORTCUTS_SECTION, Box, GtkBox, , , GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/shortcutsshortcut.hg b/gtk/src/shortcutsshortcut.hg
index d7e7195b..843a4361 100644
--- a/gtk/src/shortcutsshortcut.hg
+++ b/gtk/src/shortcutsshortcut.hg
@@ -23,7 +23,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 
 namespace Gtk
 {
-_WRAP_ENUM(ShortcutType, GtkShortcutType)
+_WRAP_ENUM(ShortcutType, GtkShortcutType, decl_prefix GTKMM_API)
 
 /** Represents a keyboard shortcut in a ShortcutsWindow.
  *
@@ -34,9 +34,9 @@ _WRAP_ENUM(ShortcutType, GtkShortcutType)
  *
  * @ingroup Widgets
  */
-class ShortcutsShortcut : public Widget
+class GTKMM_API ShortcutsShortcut : public Widget
 {
-  _CLASS_GTKOBJECT(ShortcutsShortcut, GtkShortcutsShortcut, GTK_SHORTCUTS_SHORTCUT, Widget, GtkWidget)
+  _CLASS_GTKOBJECT(ShortcutsShortcut, GtkShortcutsShortcut, GTK_SHORTCUTS_SHORTCUT, Widget, GtkWidget, , , 
GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/shortcutswindow.hg b/gtk/src/shortcutswindow.hg
index b2d9665e..d4334958 100644
--- a/gtk/src/shortcutswindow.hg
+++ b/gtk/src/shortcutswindow.hg
@@ -41,9 +41,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ShortcutsWindow : public Window
+class GTKMM_API ShortcutsWindow : public Window
 {
-  _CLASS_GTKOBJECT(ShortcutsWindow, GtkShortcutsWindow, GTK_SHORTCUTS_WINDOW, Window, GtkWindow)
+  _CLASS_GTKOBJECT(ShortcutsWindow, GtkShortcutsWindow, GTK_SHORTCUTS_WINDOW, Window, GtkWindow, , , 
GTKMM_API)
   _UNMANAGEABLE
 
 public:
diff --git a/gtk/src/singleselection.hg b/gtk/src/singleselection.hg
index eeb995f9..b70888e8 100644
--- a/gtk/src/singleselection.hg
+++ b/gtk/src/singleselection.hg
@@ -34,9 +34,9 @@ namespace Gtk
  * @see SelectionModel
  * @newin{3,96}
  */
-class SingleSelection : public Glib::Object, public Gio::ListModel, public SelectionModel
+class GTKMM_API SingleSelection : public Glib::Object, public Gio::ListModel, public SelectionModel
 {
-  _CLASS_GOBJECT(SingleSelection, GtkSingleSelection, GTK_SINGLE_SELECTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(SingleSelection, GtkSingleSelection, GTK_SINGLE_SELECTION, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gio::ListModel)
   _IMPLEMENTS_INTERFACE(SelectionModel)
   _STRUCT_NOT_HIDDEN
diff --git a/gtk/src/sizegroup.hg b/gtk/src/sizegroup.hg
index 52a4b1f8..1604a9c2 100644
--- a/gtk/src/sizegroup.hg
+++ b/gtk/src/sizegroup.hg
@@ -46,14 +46,14 @@ _CC_INCLUDE(gtk/gtk.h)
  * Gtk::SizeGroup::Mode::HORIZONTAL or Gtk::SizeGroup::Mode::BOTH, and the vertical size from the vertical 
requisition of all widgets
  * that can be reached from the widget by a chain of size groups of type Gtk::SizeGroup::Mode::VERTICAL or 
Gtk::SizeGroup::Mode::BOTH.
  */
-class SizeGroup
+class GTKMM_API SizeGroup
   : public Glib::Object,
     public Buildable
 {
-  _CLASS_GOBJECT(SizeGroup,GtkSizeGroup,GTK_SIZE_GROUP,Glib::Object,GObject)
+  _CLASS_GOBJECT(SizeGroup,GtkSizeGroup,GTK_SIZE_GROUP,Glib::Object,GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
 public:
-  _WRAP_ENUM(Mode, GtkSizeGroupMode)
+  _WRAP_ENUM(Mode, GtkSizeGroupMode, decl_prefix GTKMM_API)
 
 protected:
   explicit SizeGroup(Mode mode);
diff --git a/gtk/src/snapshot.hg b/gtk/src/snapshot.hg
index 396a31ff..4d0b28fb 100644
--- a/gtk/src/snapshot.hg
+++ b/gtk/src/snapshot.hg
@@ -25,8 +25,8 @@ typedef struct _graphene_rect_t graphene_rect_t;
 
 namespace Gdk
 {
-class RGBA;
-class Texture;
+class GTKMM_API RGBA;
+class GTKMM_API Texture;
 }
 
 namespace Gtk
@@ -47,9 +47,9 @@ namespace Gtk
  *
  * @newin{3,90}
  */
-class Snapshot : public Gdk::Snapshot
+class GTKMM_API Snapshot : public Gdk::Snapshot
 {
-  _CLASS_GOBJECT(Snapshot, GtkSnapshot, GTK_SNAPSHOT, Gdk::Snapshot, GdkSnapshot)
+  _CLASS_GOBJECT(Snapshot, GtkSnapshot, GTK_SNAPSHOT, Gdk::Snapshot, GdkSnapshot, , , GTKMM_API)
   // GtkSnapshot is typedefed as GdkSnapshot in gtktypes.h.
   // GtkSnapshot's wrap function can't be called wrap(). It would be ambiguous
   // when there is a wrap(GdkSnapshot*, bool)
@@ -132,5 +132,6 @@ namespace Glib
    *
    * @relates Gtk::Snapshot
    */
+  GTKMM_API
   Glib::RefPtr<Gtk::Snapshot> wrap_gtk_snapshot(GtkSnapshot* object, bool take_copy = false);
 }
diff --git a/gtk/src/spinbutton.hg b/gtk/src/spinbutton.hg
index ba63e788..2c42fa04 100644
--- a/gtk/src/spinbutton.hg
+++ b/gtk/src/spinbutton.hg
@@ -27,9 +27,9 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(SpinType, GtkSpinType)
+_WRAP_ENUM(SpinType, GtkSpinType, decl_prefix GTKMM_API)
 
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /** Numeric Entry with up/down buttons.
  * Slightly misnamed, this should be called a SpinEntry.
@@ -39,13 +39,13 @@ class Adjustment;
  *
  * @ingroup Widgets
  */
-class SpinButton : public Widget, public Orientable, public Editable
+class GTKMM_API SpinButton : public Widget, public Orientable, public Editable
 {
-  _CLASS_GTKOBJECT(SpinButton, GtkSpinButton, GTK_SPIN_BUTTON, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(SpinButton, GtkSpinButton, GTK_SPIN_BUTTON, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
   _IMPLEMENTS_INTERFACE(Editable)
 public:
-  _WRAP_ENUM(UpdatePolicy, GtkSpinButtonUpdatePolicy)
+  _WRAP_ENUM(UpdatePolicy, GtkSpinButtonUpdatePolicy, decl_prefix GTKMM_API)
 
   /** Creates a %SpinButton.
    * @param climb_rate The acceleration rate when you hold down a button.
diff --git a/gtk/src/spinner.hg b/gtk/src/spinner.hg
index 0baae7a1..ada5ca0c 100644
--- a/gtk/src/spinner.hg
+++ b/gtk/src/spinner.hg
@@ -31,9 +31,9 @@ _CC_INCLUDE(gtk/gtk.h)
  * @newin{2,20}
  * @ingroup Widgets
  */
-class Spinner : public Widget
+class GTKMM_API Spinner : public Widget
 {
-  _CLASS_GTKOBJECT(Spinner,GtkSpinner,GTK_SPINNER,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Spinner,GtkSpinner,GTK_SPINNER,Gtk::Widget,GtkWidget,,,GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/stack.hg b/gtk/src/stack.hg
index 28425f37..5ec53f65 100644
--- a/gtk/src/stack.hg
+++ b/gtk/src/stack.hg
@@ -42,10 +42,10 @@ _CC_INCLUDE(gtk/gtk.h)
  * @ingroup Containers
  * @newin{3,10}
  */
-class Stack
+class GTKMM_API Stack
   : public Widget
 {
-  _CLASS_GTKOBJECT(Stack, GtkStack, GTK_STACK, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Stack, GtkStack, GTK_STACK, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/stackpage.hg b/gtk/src/stackpage.hg
index d4588e67..34aa7312 100644
--- a/gtk/src/stackpage.hg
+++ b/gtk/src/stackpage.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/refptr.h>
 
@@ -22,7 +24,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gtk
 {
-class Widget;
+class GTKMM_API Widget;
 
 /** Holds properties of a Gtk::Stack page.
  *
@@ -31,9 +33,9 @@ class Widget;
  * @see Stack
  * @newin{3,96}
  */
-class StackPage : public Glib::Object
+class GTKMM_API StackPage : public Glib::Object
 {
-  _CLASS_GOBJECT(StackPage, GtkStackPage, GTK_STACK_PAGE, Glib::Object, GObject)
+  _CLASS_GOBJECT(StackPage, GtkStackPage, GTK_STACK_PAGE, Glib::Object, GObject, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(Widget* get_child(), gtk_stack_page_get_child)
diff --git a/gtk/src/stacksidebar.hg b/gtk/src/stacksidebar.hg
index 7f311513..0352068e 100644
--- a/gtk/src/stacksidebar.hg
+++ b/gtk/src/stacksidebar.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 
 namespace Gtk
 {
-class Stack;
+class GTKMM_API Stack;
 
 /** Sidebar widget that shows the pages of a Stack.
  *
@@ -36,9 +36,9 @@ class Stack;
  * @ingroup Widgets
  * @newin{3,16}
  */
-class StackSidebar : public Widget
+class GTKMM_API StackSidebar : public Widget
 {
-  _CLASS_GTKOBJECT(StackSidebar, GtkStackSidebar, GTK_STACK_SIDEBAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(StackSidebar, GtkStackSidebar, GTK_STACK_SIDEBAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/stackswitcher.hg b/gtk/src/stackswitcher.hg
index 3e9ffa18..38704d01 100644
--- a/gtk/src/stackswitcher.hg
+++ b/gtk/src/stackswitcher.hg
@@ -38,9 +38,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,10}
  */
-class StackSwitcher : public Widget
+class GTKMM_API StackSwitcher : public Widget
 {
-  _CLASS_GTKOBJECT(StackSwitcher, GtkStackSwitcher, GTK_STACK_SWITCHER, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(StackSwitcher, GtkStackSwitcher, GTK_STACK_SWITCHER, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/statusbar.hg b/gtk/src/statusbar.hg
index c29ecdce..0eb3f1aa 100644
--- a/gtk/src/statusbar.hg
+++ b/gtk/src/statusbar.hg
@@ -37,9 +37,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Statusbar : public Widget
+class GTKMM_API Statusbar : public Widget
 {
-  _CLASS_GTKOBJECT(Statusbar, GtkStatusbar, GTK_STATUSBAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Statusbar, GtkStatusbar, GTK_STATUSBAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IGNORE(gtk_statusbar_push)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/stylecontext.hg b/gtk/src/stylecontext.hg
index 0ca69876..11f470f3 100644
--- a/gtk/src/stylecontext.hg
+++ b/gtk/src/stylecontext.hg
@@ -33,7 +33,7 @@ _PINCLUDE(gtk/gtk.h)
 
 namespace Gdk
 {
-class Texture;
+class GTKMM_API Texture;
 }
 
 namespace Gtk
@@ -87,14 +87,14 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class StyleContext : public Glib::Object
+class GTKMM_API StyleContext : public Glib::Object
 {
-  _CLASS_GOBJECT(StyleContext, GtkStyleContext, GTK_STYLE_CONTEXT, Glib::Object, GObject)
+  _CLASS_GOBJECT(StyleContext, GtkStyleContext, GTK_STYLE_CONTEXT, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT()
 
 public:
-  _WRAP_ENUM(PrintFlags, GtkStyleContextPrintFlags)
+  _WRAP_ENUM(PrintFlags, GtkStyleContextPrintFlags, decl_prefix GTKMM_API)
 
   _WRAP_METHOD(static void add_provider_for_display(const Glib::RefPtr<Gdk::Display>& display, const 
Glib::RefPtr<StyleProvider>& provider, guint priority), gtk_style_context_add_provider_for_display)
   _WRAP_METHOD(static void remove_provider_for_display(const Glib::RefPtr<Gdk::Display>& display, const 
Glib::RefPtr<StyleProvider>& provider), gtk_style_context_remove_provider_for_display)
diff --git a/gtk/src/styleprovider.hg b/gtk/src/styleprovider.hg
index f0a04914..6619452c 100644
--- a/gtk/src/styleprovider.hg
+++ b/gtk/src/styleprovider.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class StyleProvider : public Glib::Interface
+class GTKMM_API StyleProvider : public Glib::Interface
 {
-  _CLASS_INTERFACE(StyleProvider, GtkStyleProvider, GTK_STYLE_PROVIDER, GtkStyleProviderIface)
+  _CLASS_INTERFACE(StyleProvider, GtkStyleProvider, GTK_STYLE_PROVIDER, GtkStyleProviderIface, , , GTKMM_API)
 
 public:
   //TODO
diff --git a/gtk/src/switch.hg b/gtk/src/switch.hg
index a41f18c1..e788f7cf 100644
--- a/gtk/src/switch.hg
+++ b/gtk/src/switch.hg
@@ -33,11 +33,11 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,0}
  */
-class Switch
+class GTKMM_API Switch
   : public Widget,
     public Actionable
 {
-  _CLASS_GTKOBJECT(Switch, GtkSwitch, GTK_SWITCH, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Switch, GtkSwitch, GTK_SWITCH, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Actionable)
 public:
 
diff --git a/gtk/src/text.hg b/gtk/src/text.hg
index 2b941984..43221f69 100644
--- a/gtk/src/text.hg
+++ b/gtk/src/text.hg
@@ -50,9 +50,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Text : public Widget,  public Editable
+class GTKMM_API Text : public Widget,  public Editable
 {
-  _CLASS_GTKOBJECT(Text, GtkText, GTK_TEXT, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Text, GtkText, GTK_TEXT, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Editable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/textbuffer.hg b/gtk/src/textbuffer.hg
index f59b73b9..8d6cef9c 100644
--- a/gtk/src/textbuffer.hg
+++ b/gtk/src/textbuffer.hg
@@ -67,9 +67,9 @@ namespace Gtk
  *
  * @ingroup TextView
  */
-class TextBuffer : public Glib::Object
+class GTKMM_API TextBuffer : public Glib::Object
 {
-   _CLASS_GOBJECT(TextBuffer, GtkTextBuffer, GTK_TEXT_BUFFER, Glib::Object, GObject)
+   _CLASS_GOBJECT(TextBuffer, GtkTextBuffer, GTK_TEXT_BUFFER, Glib::Object, GObject, , , GTKMM_API)
    _IGNORE(gtk_text_buffer_get_iter_at_line_offset, gtk_text_buffer_get_iter_at_line_index,
            gtk_text_buffer_get_iter_at_offset, gtk_text_buffer_get_iter_at_line, 
gtk_text_buffer_get_start_iter,
            gtk_text_buffer_get_end_iter, gtk_text_buffer_get_bounds, gtk_text_buffer_get_iter_at_mark,
diff --git a/gtk/src/textchildanchor.hg b/gtk/src/textchildanchor.hg
index f97fd116..c553d180 100644
--- a/gtk/src/textchildanchor.hg
+++ b/gtk/src/textchildanchor.hg
@@ -33,9 +33,9 @@ namespace Gtk
  * Typedefed as Gtk::TextBuffer::ChildAnchor.
  * @ingroup TextView
  */
-class TextChildAnchor : public Glib::Object
+class GTKMM_API TextChildAnchor : public Glib::Object
 {
-   _CLASS_GOBJECT(TextChildAnchor, GtkTextChildAnchor, GTK_TEXT_CHILD_ANCHOR, Glib::Object, GObject)
+   _CLASS_GOBJECT(TextChildAnchor, GtkTextChildAnchor, GTK_TEXT_CHILD_ANCHOR, Glib::Object, GObject, , , 
GTKMM_API)
 protected:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/textiter.hg b/gtk/src/textiter.hg
index c4560aa9..62bf279a 100644
--- a/gtk/src/textiter.hg
+++ b/gtk/src/textiter.hg
@@ -31,11 +31,11 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TextSearchFlags, GtkTextSearchFlags)
+_WRAP_ENUM(TextSearchFlags, GtkTextSearchFlags, decl_prefix GTKMM_API)
 
-class TextBuffer;
-class TextMark;
-class TextChildAnchor;
+class GTKMM_API TextBuffer;
+class GTKMM_API TextMark;
+class GTKMM_API TextChildAnchor;
 
 //TODO: Maybe we should have separate iterators for words, lines, and sentences.
 /** Common base class of TextIter and TextConstIter.
@@ -46,9 +46,9 @@ class TextChildAnchor;
  * @see TextIter
  * @ingroup TextView
  */
-class TextIterBase
+class GTKMM_API TextIterBase
 {
-  _CLASS_BOXEDTYPE_STATIC(TextIterBase, GtkTextIter)
+  _CLASS_BOXEDTYPE_STATIC(TextIterBase, GtkTextIter, GTKMM_API)
   _IGNORE(gtk_text_iter_copy, gtk_text_iter_free, gtk_text_iter_equal)
   _IGNORE(gtk_text_iter_assign)
 
@@ -231,7 +231,7 @@ public:
   _WRAP_METHOD(int compare(const TextIterBase& rhs) const, gtk_text_iter_compare)
   _WRAP_METHOD(bool in_range(const TextIterBase& start, const TextIterBase& end) const, 
gtk_text_iter_in_range)
 
-  _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare)
+  _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare, , GTKMM_API)
 
 }; // end TextIterBase
 
@@ -253,7 +253,7 @@ public:
  *
  * @ingroup TextView
  */
-class TextIter : public TextIterBase
+class GTKMM_API TextIter : public TextIterBase
 {
   _CLASS_GENERIC(TextIter, GtkTextIter)
 public:
@@ -301,7 +301,7 @@ public:
  * @see TextIter
  * @ingroup TextView
  */
-class TextConstIter : public TextIterBase
+class GTKMM_API TextConstIter : public TextIterBase
 {
   _CLASS_GENERIC(TextConstIter, GtkTextIter)
 public:
@@ -461,24 +461,28 @@ namespace Glib
  * @param object The C instance
  * @result A C++ instance that wraps this C instance.
  */
+GTKMM_API
 Gtk::TextIter& wrap_iter(GtkTextIter* object);
 
 /** @relates Gtk::TextIter
  * @param object The C instance
  * @result A C++ instance that wraps this C instance.
  */
+GTKMM_API
 const Gtk::TextIter& wrap_iter(const GtkTextIter* object);
 
 /** @relates Gtk::TextConstIter
  * @param object The C instance
  * @result A C++ instance that wraps this C instance.
  */
+GTKMM_API
 Gtk::TextConstIter& wrap_const_iter(GtkTextIter* object);
 
 /** @relates Gtk::TextConstIter
  * @param object The C instance
  * @result A C++ instance that wraps this C instance.
  */
+GTKMM_API
 const Gtk::TextConstIter& wrap_const_iter(const GtkTextIter* object);
 
 } // namespace Glib
diff --git a/gtk/src/textmark.hg b/gtk/src/textmark.hg
index d159654b..5df72df3 100644
--- a/gtk/src/textmark.hg
+++ b/gtk/src/textmark.hg
@@ -16,6 +16,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
 
 #include <glibmm/object.h>
 
@@ -25,9 +26,9 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TextBuffer;
-class TextIter;
-class TextConstIter;
+class GTKMM_API TextBuffer;
+class GTKMM_API TextIter;
+class GTKMM_API TextConstIter;
 
 /** Typedefed as Gtk::TextBuffer::Mark. A position in the buffer, preserved across buffer modifications.
  *
@@ -57,9 +58,9 @@ class TextConstIter;
  *
  * @ingroup TextView
  */
-class TextMark : public Glib::Object
+class GTKMM_API TextMark : public Glib::Object
 {
-  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)
+  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject, , , GTKMM_API)
 protected:
 
   /** Creates an anoymous text mark. Add it to a buffer using Gtk::TextBuffer::add_mark().
diff --git a/gtk/src/texttag.hg b/gtk/src/texttag.hg
index 05758434..f56f1939 100644
--- a/gtk/src/texttag.hg
+++ b/gtk/src/texttag.hg
@@ -50,9 +50,9 @@ namespace Gtk
  *
  * @ingroup TextView
  */
-class TextTag : public Glib::Object
+class GTKMM_API TextTag : public Glib::Object
 {
-   _CLASS_GOBJECT(TextTag, GtkTextTag, GTK_TEXT_TAG, Glib::Object, GObject)
+   _CLASS_GOBJECT(TextTag, GtkTextTag, GTK_TEXT_TAG, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT()
   _WRAP_CTOR(TextTag(const Glib::ustring& name), gtk_text_tag_new)
diff --git a/gtk/src/texttagtable.hg b/gtk/src/texttagtable.hg
index 4f9575a3..5ba64427 100644
--- a/gtk/src/texttagtable.hg
+++ b/gtk/src/texttagtable.hg
@@ -26,7 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TextTag;
+class GTKMM_API TextTag;
 
 /** Typedefed as Gtk::TextBuffer::TagTable. A Collection of @link Gtk::TextTag Gtk::TextBuffer::Tags@endlink 
that can be used together.
  *
@@ -36,9 +36,9 @@ class TextTag;
  *
  * @ingroup TextView
  */
-class TextTagTable : public Glib::Object, public Buildable
+class GTKMM_API TextTagTable : public Glib::Object, public Buildable
 {
-  _CLASS_GOBJECT(TextTagTable, GtkTextTagTable, GTK_TEXT_TAG_TABLE, Glib::Object, GObject)
+  _CLASS_GOBJECT(TextTagTable, GtkTextTagTable, GTK_TEXT_TAG_TABLE, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
 protected:
 
diff --git a/gtk/src/textview.hg b/gtk/src/textview.hg
index cb2314a4..257610e6 100644
--- a/gtk/src/textview.hg
+++ b/gtk/src/textview.hg
@@ -32,7 +32,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TextWindowType, GtkTextWindowType)
+_WRAP_ENUM(TextWindowType, GtkTextWindowType, decl_prefix GTKMM_API)
 
 
 /** @defgroup TextView TextView Classes
@@ -48,11 +48,11 @@ _WRAP_ENUM(TextWindowType, GtkTextWindowType)
  * @ingroup Containers
  * @ingroup TextView
  */
-class TextView
+class GTKMM_API TextView
  : public Widget,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(TextView, GtkTextView, GTK_TEXT_VIEW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(TextView, GtkTextView, GTK_TEXT_VIEW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/togglebutton.hg b/gtk/src/togglebutton.hg
index d4cd9810..788019ae 100644
--- a/gtk/src/togglebutton.hg
+++ b/gtk/src/togglebutton.hg
@@ -29,9 +29,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ToggleButton : public Button
+class GTKMM_API ToggleButton : public Button
 {
-  _CLASS_GTKOBJECT(ToggleButton,GtkToggleButton,GTK_TOGGLE_BUTTON,Gtk::Button,GtkButton)
+  _CLASS_GTKOBJECT(ToggleButton,GtkToggleButton,GTK_TOGGLE_BUTTON,Gtk::Button,GtkButton,,,GTKMM_API)
 public:
 
   /** Create an empty toggle button.
diff --git a/gtk/src/tooltip.hg b/gtk/src/tooltip.hg
index 730178cb..53779064 100644
--- a/gtk/src/tooltip.hg
+++ b/gtk/src/tooltip.hg
@@ -69,10 +69,10 @@ namespace Gtk
  *
  * @newin{2,12}
  */
-class Tooltip : public Glib::Object
+class GTKMM_API Tooltip : public Glib::Object
 {
 protected:
-  _CLASS_GOBJECT(Tooltip, GtkTooltip, GTK_TOOLTIP, Glib::Object, GObject)
+  _CLASS_GOBJECT(Tooltip, GtkTooltip, GTK_TOOLTIP, Glib::Object, GObject, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void set_markup(const Glib::ustring& markup), gtk_tooltip_set_markup)
diff --git a/gtk/src/treedragdest.hg b/gtk/src/treedragdest.hg
index 23b61706..02c6737a 100644
--- a/gtk/src/treedragdest.hg
+++ b/gtk/src/treedragdest.hg
@@ -35,9 +35,9 @@ namespace Gtk
 /**
  * @ingroup TreeView
  */
-class TreeDragDest : public Glib::Interface
+class GTKMM_API TreeDragDest : public Glib::Interface
 {
-  _CLASS_INTERFACE(TreeDragDest, GtkTreeDragDest, GTK_TREE_DRAG_DEST, GtkTreeDragDestIface)
+  _CLASS_INTERFACE(TreeDragDest, GtkTreeDragDest, GTK_TREE_DRAG_DEST, GtkTreeDragDestIface, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/treedragsource.hg b/gtk/src/treedragsource.hg
index ed9e39f0..37062dc9 100644
--- a/gtk/src/treedragsource.hg
+++ b/gtk/src/treedragsource.hg
@@ -35,9 +35,9 @@ namespace Gtk
 /**
  * @ingroup TreeView
 */
-class TreeDragSource : public Glib::Interface
+class GTKMM_API TreeDragSource : public Glib::Interface
 {
-  _CLASS_INTERFACE(TreeDragSource, GtkTreeDragSource, GTK_TREE_DRAG_SOURCE, GtkTreeDragSourceIface)
+  _CLASS_INTERFACE(TreeDragSource, GtkTreeDragSource, GTK_TREE_DRAG_SOURCE, GtkTreeDragSourceIface, , , 
GTKMM_API)
 
 public:
   _WRAP_METHOD(bool row_draggable(const TreeModel::Path& path) const, gtk_tree_drag_source_row_draggable)
diff --git a/gtk/src/treeiter.hg b/gtk/src/treeiter.hg
index f56df582..c02896f5 100644
--- a/gtk/src/treeiter.hg
+++ b/gtk/src/treeiter.hg
@@ -26,13 +26,13 @@ _DEFS(gtkmm,gtk)
 namespace Gtk
 {
 
-class TreeModel;
+class GTKMM_API TreeModel;
 template <typename T>
 class TreeIter;
-class TreeConstRow;
-class TreeRow;
-class TreeNodeConstChildren;
-class TreeNodeChildren;
+class GTKMM_API TreeConstRow;
+class GTKMM_API TreeRow;
+class GTKMM_API TreeNodeConstChildren;
+class GTKMM_API TreeNodeChildren;
 
 // Why all the base classes?
 //
@@ -47,9 +47,9 @@ class TreeNodeChildren;
  *
  * @ingroup TreeView
  */
-class TreeIterBase
+class GTKMM_API TreeIterBase
 {
-  _CLASS_BOXEDTYPE_STATIC(TreeIterBase, GtkTreeIter)
+  _CLASS_BOXEDTYPE_STATIC(TreeIterBase, GtkTreeIter, GTKMM_API)
   _IGNORE(gtk_tree_iter_copy, gtk_tree_iter_free)
   _NO_WRAP_FUNCTION() // A wrap() for TreeIterBase* wouldn't be very helpful.
 };
@@ -58,7 +58,7 @@ class TreeIterBase
  *
  * @ingroup TreeView
  */
-class TreeIterBase2 : public TreeIterBase
+class GTKMM_API TreeIterBase2 : public TreeIterBase
 {
 protected:
 
@@ -100,7 +100,7 @@ protected:
  *
  * @ingroup TreeView
  */
-class TreeIterBase3 : public TreeIterBase2
+class GTKMM_API TreeIterBase3 : public TreeIterBase2
 {
 public:
 
@@ -289,7 +289,7 @@ private:
  * @see TreeRow
  * @ingroup TreeView
  */
-class TreeConstRow : public TreeIterBase2
+class GTKMM_API TreeConstRow : public TreeIterBase2
 {
 public:
 
@@ -369,7 +369,7 @@ private:
  *
  * @ingroup TreeView
  */
-class TreeRow : public TreeConstRow
+class GTKMM_API TreeRow : public TreeConstRow
 {
 public:
 
@@ -446,7 +446,7 @@ private:
  * @see TreeNodeChildren
  * @ingroup TreeView
  */
-class TreeNodeConstChildren : public TreeIterBase2
+class GTKMM_API TreeNodeConstChildren : public TreeIterBase2
 {
 public:
   using value_type      = Gtk::TreeConstRow;
@@ -494,7 +494,7 @@ public:
  *
  * @ingroup TreeView
  */
-class TreeNodeChildren : public TreeNodeConstChildren
+class GTKMM_API TreeNodeChildren : public TreeNodeConstChildren
 {
 public:
   using value_type      = Gtk::TreeRow;
diff --git a/gtk/src/treemodel.hg b/gtk/src/treemodel.hg
index 12e8e805..5e56ffb9 100644
--- a/gtk/src/treemodel.hg
+++ b/gtk/src/treemodel.hg
@@ -29,10 +29,10 @@ _PINCLUDE(glibmm/private/interface_p.h)
 namespace Gtk
 {
 
-class TreeModelFilter;
-class TreeModelSort;
-class TreePath;
-class TreeRowReference;
+class GTKMM_API TreeModelFilter;
+class GTKMM_API TreeModelSort;
+class GTKMM_API TreePath;
+class GTKMM_API TreeRowReference;
 
 _CC_INCLUDE(gtk/gtk.h)
 
@@ -79,9 +79,9 @@ _CC_INCLUDE(gtk/gtk.h)
  * The @link Gtk::TreeRowReference RowReference@endlink is also useful, because it remains
  * valid as long as there is an existing row pointed to by it's path. You can convert between RowReferences 
and iterators and @link Gtk::TreePath Path@endlink s.
  */
-class TreeModel : public Glib::Interface
+class GTKMM_API TreeModel : public Glib::Interface
 {
-  _CLASS_INTERFACE(TreeModel, GtkTreeModel, GTK_TREE_MODEL, GtkTreeModelIface)
+  _CLASS_INTERFACE(TreeModel, GtkTreeModel, GTK_TREE_MODEL, GtkTreeModelIface, , , GTKMM_API)
   _IGNORE(
       gtk_tree_model_iter_parent, gtk_tree_model_get_iter, gtk_tree_model_get,
       gtk_tree_model_get_iter_from_string, gtk_tree_model_get_string_from_iter,
@@ -108,7 +108,7 @@ public:
   //These are part of GtkTreeModelFilter or GtkTreeModelSort, not GtkTreeModel:
   _IGNORE(gtk_tree_model_filter_new, gtk_tree_model_sort_new_with_model)
 
-  _WRAP_ENUM(Flags, GtkTreeModelFlags)
+  _WRAP_ENUM(Flags, GtkTreeModelFlags, decl_prefix GTKMM_API)
 
   /** Returns a valid iterator pointing to @a path.
    *
@@ -428,10 +428,10 @@ dnl
   //This might not need to be virtual, but it's not a big deal. murrayc.
   virtual void get_value_impl(const const_iterator& iter, int column, Glib::ValueBase& value) const;
 
-  friend class Gtk::TreeModelFilter;
-  friend class Gtk::TreeModelSort;
-  friend class Gtk::TreeConstRow;
-  friend class Gtk::TreeRow;
+  friend GTKMM_API class Gtk::TreeModelFilter;
+  friend GTKMM_API class Gtk::TreeModelSort;
+  friend GTKMM_API class Gtk::TreeConstRow;
+  friend GTKMM_API class Gtk::TreeRow;
 };
 
 } // namespace Gtk
diff --git a/gtk/src/treemodelfilter.hg b/gtk/src/treemodelfilter.hg
index 170705fe..bd30f9cd 100644
--- a/gtk/src/treemodelfilter.hg
+++ b/gtk/src/treemodelfilter.hg
@@ -32,12 +32,12 @@ namespace Gtk
  * @ingroup TreeView
  *
  */
-class TreeModelFilter :
+class GTKMM_API TreeModelFilter :
   public Glib::Object,
   public TreeModel,
   public TreeDragSource
 {
-  _CLASS_GOBJECT(TreeModelFilter, GtkTreeModelFilter, GTK_TREE_MODEL_FILTER, Glib::Object, GObject)
+  _CLASS_GOBJECT(TreeModelFilter, GtkTreeModelFilter, GTK_TREE_MODEL_FILTER, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(TreeModel)
   _IMPLEMENTS_INTERFACE(TreeDragSource)
 
diff --git a/gtk/src/treemodelsort.hg b/gtk/src/treemodelsort.hg
index 523f4719..e52c7ba5 100644
--- a/gtk/src/treemodelsort.hg
+++ b/gtk/src/treemodelsort.hg
@@ -49,13 +49,13 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class TreeModelSort :
+class GTKMM_API TreeModelSort :
   public Glib::Object,
   public TreeModel,
   public TreeSortable,
   public TreeDragSource
 {
-  _CLASS_GOBJECT(TreeModelSort, GtkTreeModelSort, GTK_TREE_MODEL_SORT, Glib::Object, GObject)
+  _CLASS_GOBJECT(TreeModelSort, GtkTreeModelSort, GTK_TREE_MODEL_SORT, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(TreeModel)
   _IMPLEMENTS_INTERFACE(TreeSortable)
   _IMPLEMENTS_INTERFACE(TreeDragSource)
diff --git a/gtk/src/treepath.hg b/gtk/src/treepath.hg
index 8782f50b..a65f4b48 100644
--- a/gtk/src/treepath.hg
+++ b/gtk/src/treepath.hg
@@ -42,9 +42,9 @@ namespace Gtk
  * Typedefed as Gtk::TreeModel::Path.
  * @ingroup TreeView
  */
-class TreePath
+class GTKMM_API TreePath
 {
-  _CLASS_BOXEDTYPE(TreePath, GtkTreePath, gtk_tree_path_new, gtk_tree_path_copy, gtk_tree_path_free)
+  _CLASS_BOXEDTYPE(TreePath, GtkTreePath, gtk_tree_path_new, gtk_tree_path_copy, gtk_tree_path_free, 
GTKMM_API)
   _IGNORE(gtk_tree_path_copy, gtk_tree_path_free, gtk_tree_path_compare)
 
 public:
diff --git a/gtk/src/treerowreference.hg b/gtk/src/treerowreference.hg
index c23fbd58..613f0398 100644
--- a/gtk/src/treerowreference.hg
+++ b/gtk/src/treerowreference.hg
@@ -31,9 +31,9 @@ namespace Gtk
  * signals emitted by the Model, and updates its Path appropriately.
  * @ingroup TreeView
 */
-class TreeRowReference
+class GTKMM_API TreeRowReference
 {
-  _CLASS_BOXEDTYPE(TreeRowReference, GtkTreeRowReference, NONE, gtk_tree_row_reference_copy, 
gtk_tree_row_reference_free)
+  _CLASS_BOXEDTYPE(TreeRowReference, GtkTreeRowReference, NONE, gtk_tree_row_reference_copy, 
gtk_tree_row_reference_free, GTKMM_API)
   _IGNORE(gtk_tree_row_reference_new, gtk_tree_row_reference_copy, gtk_tree_row_reference_free)
 public:
   TreeRowReference(const Glib::RefPtr<TreeModel>& model, const TreeModel::Path& path);
diff --git a/gtk/src/treeselection.hg b/gtk/src/treeselection.hg
index e7aa673e..b20e1d17 100644
--- a/gtk/src/treeselection.hg
+++ b/gtk/src/treeselection.hg
@@ -28,7 +28,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TreeView;
+class GTKMM_API TreeView;
 
 /** Typedefed as Gtk::TreeView::Selection.
  * This is a helper object to manage the selection for a Gtk::TreeView widget.
@@ -54,9 +54,9 @@ class TreeView;
  *
  * @ingroup TreeView
  */
-class TreeSelection : public Glib::Object
+class GTKMM_API TreeSelection : public Glib::Object
 {
-  _CLASS_GOBJECT(TreeSelection, GtkTreeSelection, GTK_TREE_SELECTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(TreeSelection, GtkTreeSelection, GTK_TREE_SELECTION, Glib::Object, GObject, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void set_mode(SelectionMode type), gtk_tree_selection_set_mode)
diff --git a/gtk/src/treesortable.hg b/gtk/src/treesortable.hg
index d0366407..02000944 100644
--- a/gtk/src/treesortable.hg
+++ b/gtk/src/treesortable.hg
@@ -42,9 +42,9 @@ namespace Gtk
 /**
  * @ingroup TreeView
 */
-class TreeSortable : public Glib::Interface
+class GTKMM_API TreeSortable : public Glib::Interface
 {
-  _CLASS_INTERFACE(TreeSortable, GtkTreeSortable, GTK_TREE_SORTABLE, GtkTreeSortableIface)
+  _CLASS_INTERFACE(TreeSortable, GtkTreeSortable, GTK_TREE_SORTABLE, GtkTreeSortableIface, , , GTKMM_API)
 
 public:
 
diff --git a/gtk/src/treestore.hg b/gtk/src/treestore.hg
index f9547389..ac2b94b2 100644
--- a/gtk/src/treestore.hg
+++ b/gtk/src/treestore.hg
@@ -35,7 +35,7 @@ namespace Gtk
 /**
  * @ingroup TreeView
  */
-class TreeStore :
+class GTKMM_API TreeStore :
   public Glib::Object,
   public Gtk::TreeModel,
   public TreeSortable,
@@ -43,7 +43,7 @@ class TreeStore :
   public TreeDragDest,
   public Buildable
 {
-  _CLASS_GOBJECT(TreeStore, GtkTreeStore, GTK_TREE_STORE, Glib::Object, GObject)
+  _CLASS_GOBJECT(TreeStore, GtkTreeStore, GTK_TREE_STORE, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(TreeModel)
   _IMPLEMENTS_INTERFACE(TreeSortable)
   _IMPLEMENTS_INTERFACE(TreeDragSource)
diff --git a/gtk/src/treeview.hg b/gtk/src/treeview.hg
index 27b59813..127a735c 100644
--- a/gtk/src/treeview.hg
+++ b/gtk/src/treeview.hg
@@ -100,17 +100,17 @@ class TreeModel;
  * @ingroup Containers
  * @ingroup TreeView
  */
-class TreeView
+class GTKMM_API TreeView
  : public Widget,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(TreeView, GtkTreeView, GTK_TREE_VIEW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(TreeView, GtkTreeView, GTK_TREE_VIEW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
   _IGNORE(gtk_tree_view_get_path_at_pos, gtk_tree_view_get_cursor,
           gtk_tree_view_insert_column_with_data_func, gtk_tree_view_get_drag_dest_row, 
gtk_tree_view_get_dest_row_at_pos)
 public:
-  _WRAP_ENUM(DropPosition, GtkTreeViewDropPosition)
-  _WRAP_ENUM(GridLines, GtkTreeViewGridLines)
+  _WRAP_ENUM(DropPosition, GtkTreeViewDropPosition, decl_prefix GTKMM_API)
+  _WRAP_ENUM(GridLines, GtkTreeViewGridLines, decl_prefix GTKMM_API)
 
   /**  A visible column in a Gtk::TreeView widget.
    */
@@ -971,37 +971,37 @@ namespace TreeView_Private
 // append_column_numeric<>() and append_column_numeric_editable<>().
 
 //bool specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<bool>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<bool>& model_column);
 
 //int specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<int>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<int>& model_column);
 
 //unsigned int specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<unsigned int>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<unsigned int>& model_column);
 
 //long specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<long>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<long>& model_column);
 
 //unsigned long specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<unsigned long>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<unsigned long>& model_column);
 
 //float specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<float>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<float>& model_column);
 
 //double specialization:
-template<>
+template<> GTKMM_API
 void _connect_auto_store_editable_signal_handler<double>(Gtk::TreeView* this_p,
   Gtk::CellRenderer* pCellRenderer, const Gtk::TreeModelColumn<double>& model_column);
 
@@ -1021,35 +1021,35 @@ T _convert_from_ustring_to_numeric_type(const Glib::ustring& text)
 }
 
 // Floating point specializations
-template<>
+template<> GTKMM_API
 float _convert_from_ustring_to_numeric_type<float>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 long double _convert_from_ustring_to_numeric_type<long double>(const Glib::ustring& text);
 
 // Integral specializations
-template<>
+template<> GTKMM_API
 short _convert_from_ustring_to_numeric_type<short>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 unsigned short _convert_from_ustring_to_numeric_type<unsigned short>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 int _convert_from_ustring_to_numeric_type<int>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 unsigned int _convert_from_ustring_to_numeric_type<unsigned int>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 long _convert_from_ustring_to_numeric_type<long>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 unsigned long _convert_from_ustring_to_numeric_type<unsigned long>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 long long _convert_from_ustring_to_numeric_type<long long>(const Glib::ustring& text);
 
-template<>
+template<> GTKMM_API
 unsigned long long _convert_from_ustring_to_numeric_type<unsigned long long>(const Glib::ustring& text);
 
 
diff --git a/gtk/src/treeviewcolumn.hg b/gtk/src/treeviewcolumn.hg
index 9cc0e1bc..d520c8eb 100644
--- a/gtk/src/treeviewcolumn.hg
+++ b/gtk/src/treeviewcolumn.hg
@@ -51,13 +51,13 @@ class GTKMM_API TreeViewColumn
   public CellLayout,
   public Buildable
 {
-  _CLASS_GTKOBJECT(TreeViewColumn, GtkTreeViewColumn, GTK_TREE_VIEW_COLUMN, Object, GObject)
+  _CLASS_GTKOBJECT(TreeViewColumn, GtkTreeViewColumn, GTK_TREE_VIEW_COLUMN, Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(Buildable)
   _IGNORE(gtk_tree_view_column_set_cell_data_func)
 
 public:
-_WRAP_ENUM(Sizing, GtkTreeViewColumnSizing)
+_WRAP_ENUM(Sizing, GtkTreeViewColumnSizing, decl_prefix GTKMM_API)
 
 typedef TreeViewColumn Column;
 
diff --git a/gtk/src/video.hg b/gtk/src/video.hg
index 7f4a6cf8..662a517a 100644
--- a/gtk/src/video.hg
+++ b/gtk/src/video.hg
@@ -34,9 +34,9 @@ namespace Gtk
  *
  * @newin{3,94}
  */
-class Video : public Widget
+class GTKMM_API Video : public Widget
 {
-  _CLASS_GTKOBJECT(Video, GtkVideo, GTK_VIDEO, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Video, GtkVideo, GTK_VIDEO, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:
diff --git a/gtk/src/viewport.hg b/gtk/src/viewport.hg
index 2e442123..90bb0fce 100644
--- a/gtk/src/viewport.hg
+++ b/gtk/src/viewport.hg
@@ -29,11 +29,11 @@ namespace Gtk {
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Viewport
+class GTKMM_API Viewport
  : public Widget,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(Viewport, GtkViewport, GTK_VIEWPORT, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Viewport, GtkViewport, GTK_VIEWPORT, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
 
diff --git a/gtk/src/volumebutton.hg b/gtk/src/volumebutton.hg
index a30d11e2..61818889 100644
--- a/gtk/src/volumebutton.hg
+++ b/gtk/src/volumebutton.hg
@@ -33,9 +33,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{2,12}
  */
-class VolumeButton : public ScaleButton
+class GTKMM_API VolumeButton : public ScaleButton
 {
-  _CLASS_GTKOBJECT(VolumeButton, GtkVolumeButton, GTK_VOLUME_BUTTON, Gtk::ScaleButton, GtkScaleButton)
+  _CLASS_GTKOBJECT(VolumeButton, GtkVolumeButton, GTK_VOLUME_BUTTON, Gtk::ScaleButton, GtkScaleButton, , , 
GTKMM_API)
 public:
 
   /** Creates a VolumeButton, with a range between 0 and 100, with
diff --git a/gtk/src/widget.hg b/gtk/src/widget.hg
index ee473871..07d652cc 100644
--- a/gtk/src/widget.hg
+++ b/gtk/src/widget.hg
@@ -46,13 +46,13 @@ _PINCLUDE(gtkmm/private/object_p.h)
 
 namespace Gio
 {
-class ListModel;
+class GTKMM_API ListModel;
 }
 
 namespace Gdk
 {
-class FrameClock;
-class Paintable;
+class GTKMM_API FrameClock;
+class GTKMM_API Paintable;
 }
 
 namespace Gtk
@@ -60,15 +60,15 @@ namespace Gtk
 
 _CC_INCLUDE(gtk/gtk.h)
 
-class Adjustment;
-class Window;
-class Root;
-class Native;
-class EventController;
-class LayoutManager;
-class Settings;
-class Snapshot;
-class Tooltip;
+class GTKMM_API Adjustment;
+class GTKMM_API Window;
+class GTKMM_API Root;
+class GTKMM_API Native;
+class GTKMM_API EventController;
+class GTKMM_API LayoutManager;
+class GTKMM_API Settings;
+class GTKMM_API Snapshot;
+class GTKMM_API Tooltip;
 
 // Gtk::Allocation is a typedef of Gdk::Rectangle because GtkAllocation is
 // a typedef of GdkRectangle.
@@ -98,7 +98,7 @@ typedef Gdk::Rectangle Allocation;
  * Only widgets with a Gdk::Surface on the server side are allowed to
  * capture events.
  */
-class Widget
+class GTKMM_API Widget
 : public Object,
   public Buildable,
   public ConstraintTarget
@@ -106,7 +106,7 @@ class Widget
   ,public Atk::Implementor
 #endif //GTKMM_ATKMM_ENABLED
 {
-  _CLASS_GTKOBJECT(Widget,GtkWidget,GTK_WIDGET,Object,GObject)
+  _CLASS_GTKOBJECT(Widget,GtkWidget,GTK_WIDGET,Object,GObject,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
   _IMPLEMENTS_INTERFACE(ConstraintTarget)
   _IMPLEMENTS_INTERFACE(Atk::Implementor, ifdef GTKMM_ATKMM_ENABLED)
diff --git a/gtk/src/widgetpaintable.hg b/gtk/src/widgetpaintable.hg
index 0da2d5a2..6edc9bf5 100644
--- a/gtk/src/widgetpaintable.hg
+++ b/gtk/src/widgetpaintable.hg
@@ -49,9 +49,9 @@ namespace Gtk
  *
  * @newin{3,94}
  */
-class WidgetPaintable : public Glib::Object, public Gdk::Paintable
+class GTKMM_API WidgetPaintable : public Glib::Object, public Gdk::Paintable
 {
-  _CLASS_GOBJECT(WidgetPaintable, GtkWidgetPaintable, GTK_WIDGET_PAINTABLE, Glib::Object, GObject)
+  _CLASS_GOBJECT(WidgetPaintable, GtkWidgetPaintable, GTK_WIDGET_PAINTABLE, Glib::Object, GObject, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(Gdk::Paintable)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gtk/src/window.hg b/gtk/src/window.hg
index 765e7ce8..2416de6f 100644
--- a/gtk/src/window.hg
+++ b/gtk/src/window.hg
@@ -33,13 +33,13 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 
 namespace Gio
 {
-class ListModel;
+class GTKMM_API ListModel;
 }
 
 namespace Gtk
 {
 
-class WindowGroup;
+class GTKMM_API WindowGroup;
 
 /** Toplevel %Window.
  * This represents all widgets which are physical windows controlled
@@ -55,9 +55,9 @@ class WindowGroup;
  *
  * @ingroup Widgets
  */
-class Window : public Widget, public Native, public ShortcutManager, public Root
+class GTKMM_API Window : public Widget, public Native, public ShortcutManager, public Root
 {
-  _CLASS_GTKOBJECT(Window, GtkWindow, GTK_WINDOW, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Window, GtkWindow, GTK_WINDOW, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Native)
   _IMPLEMENTS_INTERFACE(ShortcutManager)
   _IMPLEMENTS_INTERFACE(Root)
diff --git a/gtk/src/windowcontrols.hg b/gtk/src/windowcontrols.hg
index 826f8a43..53573290 100644
--- a/gtk/src/windowcontrols.hg
+++ b/gtk/src/windowcontrols.hg
@@ -55,9 +55,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,98}
  */
-class WindowControls : public Widget
+class GTKMM_API WindowControls : public Widget
 {
-  _CLASS_GTKOBJECT(WindowControls, GtkWindowControls, GTK_WINDOW_CONTROLS, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(WindowControls, GtkWindowControls, GTK_WINDOW_CONTROLS, Gtk::Widget, GtkWidget, , , 
GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:
diff --git a/gtk/src/windowgroup.hg b/gtk/src/windowgroup.hg
index b1e5174d..7cca2e5f 100644
--- a/gtk/src/windowgroup.hg
+++ b/gtk/src/windowgroup.hg
@@ -26,13 +26,13 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class Window;
+class GTKMM_API Window;
 
 /** Limit the effect of grabs
  */
-class WindowGroup : public Glib::Object
+class GTKMM_API WindowGroup : public Glib::Object
 {
-  _CLASS_GOBJECT(WindowGroup, GtkWindowGroup, GTK_WINDOW_GROUP, Glib::Object, GObject)
+  _CLASS_GOBJECT(WindowGroup, GtkWindowGroup, GTK_WINDOW_GROUP, Glib::Object, GObject, , , GTKMM_API)
 
 protected:
   _CTOR_DEFAULT()
diff --git a/gtk/src/windowhandle.hg b/gtk/src/windowhandle.hg
index 71d81607..c8032ae9 100644
--- a/gtk/src/windowhandle.hg
+++ b/gtk/src/windowhandle.hg
@@ -32,9 +32,9 @@ namespace Gtk
  * @ingroup Containers
  * @newin{3,98}
  */
-class WindowHandle : public Widget
+class GTKMM_API WindowHandle : public Widget
 {
-  _CLASS_GTKOBJECT(WindowHandle, GtkWindowHandle, GTK_WINDOW_HANDLE, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(WindowHandle, GtkWindowHandle, GTK_WINDOW_HANDLE, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _STRUCT_NOT_HIDDEN
 
 public:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]