[gtkmm/use-dllexport-3-24: 4/6] gtk/src/*.hg: Mark classes and functions with GTKMM_API



commit 8d5de171674f7aa8a6cb164030d4e2849158b5cb
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Sat Apr 11 23:15:52 2020 +0800

    gtk/src/*.hg: Mark classes and functions with GTKMM_API
    
    Mark all the classes and methods/functions (if applicable) with
    GTKMM_API so that we can use it to export symbols, if gmmproc is new
    enough to apply GTKMM_API to the _WRAP_ENUM, _WRAP_GERROR, _WRAP_EQUAL*
    and _CLASS_* items.
    
    The check on whether gmmproc is new enough will be in an upcoming
    commit.

 gtk/src/aboutdialog.hg           |   6 +--
 gtk/src/accelgroup.hg            |   6 ++-
 gtk/src/accellabel.hg            |   4 +-
 gtk/src/action.hg                |  16 +++----
 gtk/src/actionable.hg            |   6 ++-
 gtk/src/actionbar.hg             |   4 +-
 gtk/src/actiongroup.hg           |   4 +-
 gtk/src/activatable.hg           |   4 +-
 gtk/src/adjustment.hg            |  12 +++--
 gtk/src/alignment.hg             |   4 +-
 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     |   7 +--
 gtk/src/arrow.hg                 |   4 +-
 gtk/src/aspectframe.hg           |   4 +-
 gtk/src/assistant.hg             |   6 +--
 gtk/src/bin.hg                   |   4 +-
 gtk/src/border.hg                |   6 ++-
 gtk/src/box.hg                   |   4 +-
 gtk/src/buildable.hg             |   6 ++-
 gtk/src/builder.hg               |  10 ++--
 gtk/src/button.hg                |   6 +--
 gtk/src/buttonbox.hg             |   4 +-
 gtk/src/calendar.hg              |   6 +--
 gtk/src/cellarea.hg              |   4 +-
 gtk/src/cellareabox.hg           |   4 +-
 gtk/src/cellareacontext.hg       |   8 ++--
 gtk/src/celleditable.hg          |   6 ++-
 gtk/src/celllayout.hg            |   4 +-
 gtk/src/cellrenderer.hg          |   8 ++--
 gtk/src/cellrendereraccel.hg     |   6 +--
 gtk/src/cellrenderercombo.hg     |   4 +-
 gtk/src/cellrendererpixbuf.hg    |   6 +--
 gtk/src/cellrendererprogress.hg  |   4 +-
 gtk/src/cellrendererspin.hg      |   4 +-
 gtk/src/cellrendererspinner.hg   |   4 +-
 gtk/src/cellrenderertext.hg      |   4 +-
 gtk/src/cellrenderertoggle.hg    |   4 +-
 gtk/src/cellview.hg              |   4 +-
 gtk/src/checkbutton.hg           |   4 +-
 gtk/src/checkmenuitem.hg         |   4 +-
 gtk/src/clipboard.hg             |   6 +--
 gtk/src/colorbutton.hg           |   4 +-
 gtk/src/colorchooser.hg          |   4 +-
 gtk/src/colorchooserdialog.hg    |   4 +-
 gtk/src/colorselection.hg        |   8 ++--
 gtk/src/combobox.hg              |   4 +-
 gtk/src/comboboxtext.hg          |   4 +-
 gtk/src/container.hg             |   8 ++--
 gtk/src/cssprovider.hg           |   6 +--
 gtk/src/csssection.hg            |   8 ++--
 gtk/src/dialog.hg                |   8 ++--
 gtk/src/drawingarea.hg           |   4 +-
 gtk/src/editable.hg              |   6 ++-
 gtk/src/entry.hg                 |   6 +--
 gtk/src/entrybuffer.hg           |   4 +-
 gtk/src/entrycompletion.hg       |   6 +--
 gtk/src/enums.hg                 | 101 ++++++++++++++++++++-------------------
 gtk/src/eventbox.hg              |   4 +-
 gtk/src/eventcontroller.hg       |   6 +--
 gtk/src/expander.hg              |   4 +-
 gtk/src/filechooser.hg           |  10 ++--
 gtk/src/filechooserbutton.hg     |   4 +-
 gtk/src/filechooserdialog.hg     |   4 +-
 gtk/src/filechoosernative.hg     |   6 +--
 gtk/src/filechooserwidget.hg     |   4 +-
 gtk/src/filefilter.hg            |   8 ++--
 gtk/src/fixed.hg                 |   4 +-
 gtk/src/flowbox.hg               |   4 +-
 gtk/src/flowboxchild.hg          |   4 +-
 gtk/src/fontbutton.hg            |   4 +-
 gtk/src/fontchooser.hg           |   6 ++-
 gtk/src/fontchooserdialog.hg     |   4 +-
 gtk/src/fontchooserwidget.hg     |   4 +-
 gtk/src/fontselection.hg         |  16 +++----
 gtk/src/frame.hg                 |   4 +-
 gtk/src/gesture.hg               |   6 +--
 gtk/src/gesturedrag.hg           |   4 +-
 gtk/src/gesturelongpress.hg      |   4 +-
 gtk/src/gesturemultipress.hg     |   4 +-
 gtk/src/gesturepan.hg            |   6 +--
 gtk/src/gesturerotate.hg         |   4 +-
 gtk/src/gesturesingle.hg         |   4 +-
 gtk/src/gestureswipe.hg          |   4 +-
 gtk/src/gesturezoom.hg           |   4 +-
 gtk/src/glarea.hg                |   4 +-
 gtk/src/grid.hg                  |   4 +-
 gtk/src/handlebox.hg             |   4 +-
 gtk/src/headerbar.hg             |   4 +-
 gtk/src/hvbox.hg                 |   8 ++--
 gtk/src/hvbuttonbox.hg           |   8 ++--
 gtk/src/hvpaned.hg               |   8 ++--
 gtk/src/hvscale.hg               |   8 ++--
 gtk/src/hvscrollbar.hg           |   8 ++--
 gtk/src/hvseparator.hg           |   8 ++--
 gtk/src/iconfactory.hg           |   4 +-
 gtk/src/iconinfo.hg              |   6 +--
 gtk/src/iconset.hg               |   8 ++--
 gtk/src/iconsource.hg            |   4 +-
 gtk/src/icontheme.hg             |   8 ++--
 gtk/src/iconview.hg              |   6 +--
 gtk/src/image.hg                 |   6 +--
 gtk/src/imagemenuitem.hg         |   4 +-
 gtk/src/infobar.hg               |   4 +-
 gtk/src/invisible.hg             |   4 +-
 gtk/src/label.hg                 |   6 +--
 gtk/src/layout.hg                |   4 +-
 gtk/src/levelbar.hg              |   6 +--
 gtk/src/linkbutton.hg            |   4 +-
 gtk/src/listbox.hg               |   6 +--
 gtk/src/listboxrow.hg            |   4 +-
 gtk/src/liststore.hg             |   4 +-
 gtk/src/lockbutton.hg            |   4 +-
 gtk/src/main.hg                  |  10 ++--
 gtk/src/menu.hg                  |   6 +--
 gtk/src/menubar.hg               |   6 +--
 gtk/src/menubutton.hg            |   4 +-
 gtk/src/menuitem.hg              |   8 ++--
 gtk/src/menushell.hg             |   8 ++--
 gtk/src/menutoolbutton.hg        |   4 +-
 gtk/src/messagedialog.hg         |   6 +--
 gtk/src/misc.hg                  |   4 +-
 gtk/src/modelbutton.hg           |   6 +--
 gtk/src/nativedialog.hg          |   8 ++--
 gtk/src/notebook.hg              |   6 +--
 gtk/src/numerableicon.hg         |   4 +-
 gtk/src/offscreenwindow.hg       |   4 +-
 gtk/src/orientable.hg            |   4 +-
 gtk/src/overlay.hg               |   4 +-
 gtk/src/pagesetup.hg             |   4 +-
 gtk/src/pagesetupunixdialog.hg   |   4 +-
 gtk/src/paned.hg                 |   4 +-
 gtk/src/papersize.hg             |  22 +++++----
 gtk/src/placessidebar.hg         |   6 +--
 gtk/src/plug.hg                  |   4 +-
 gtk/src/popover.hg               |   6 +--
 gtk/src/popovermenu.hg           |   4 +-
 gtk/src/printcontext.hg          |   4 +-
 gtk/src/printer.hg               |   5 +-
 gtk/src/printjob.hg              |   4 +-
 gtk/src/printoperation.hg        |  16 ++++---
 gtk/src/printoperationpreview.hg |   4 +-
 gtk/src/printsettings.hg         |  14 +++---
 gtk/src/printunixdialog.hg       |   4 +-
 gtk/src/progressbar.hg           |   4 +-
 gtk/src/radioaction.hg           |   6 +--
 gtk/src/radiobutton.hg           |   4 +-
 gtk/src/radiomenuitem.hg         |   6 +--
 gtk/src/radiotoolbutton.hg       |   4 +-
 gtk/src/range.hg                 |   6 +--
 gtk/src/recentaction.hg          |   6 +--
 gtk/src/recentchooser.hg         |   8 ++--
 gtk/src/recentchooserdialog.hg   |   4 +-
 gtk/src/recentchoosermenu.hg     |   4 +-
 gtk/src/recentchooserwidget.hg   |   4 +-
 gtk/src/recentfilter.hg          |   8 ++--
 gtk/src/recentinfo.hg            |  10 ++--
 gtk/src/recentmanager.hg         |   6 +--
 gtk/src/revealer.hg              |   4 +-
 gtk/src/scale.hg                 |   4 +-
 gtk/src/scalebutton.hg           |   4 +-
 gtk/src/scrollable.hg            |   6 +--
 gtk/src/scrollbar.hg             |   4 +-
 gtk/src/scrolledwindow.hg        |   8 ++--
 gtk/src/searchbar.hg             |   4 +-
 gtk/src/searchentry.hg           |   4 +-
 gtk/src/selectiondata.hg         |   8 ++--
 gtk/src/separator.hg             |   4 +-
 gtk/src/separatormenuitem.hg     |   4 +-
 gtk/src/separatortoolitem.hg     |   4 +-
 gtk/src/settings.hg              |   8 ++--
 gtk/src/shortcutlabel.hg         |   4 +-
 gtk/src/shortcutsgroup.hg        |   4 +-
 gtk/src/shortcutssection.hg      |   4 +-
 gtk/src/shortcutsshortcut.hg     |   6 +--
 gtk/src/shortcutswindow.hg       |   4 +-
 gtk/src/sizegroup.hg             |   6 +--
 gtk/src/socket.hg                |   4 +-
 gtk/src/spinbutton.hg            |  10 ++--
 gtk/src/spinner.hg               |   4 +-
 gtk/src/stack.hg                 |   4 +-
 gtk/src/stacksidebar.hg          |   6 +--
 gtk/src/stackswitcher.hg         |   4 +-
 gtk/src/statusbar.hg             |   4 +-
 gtk/src/statusicon.hg            |   4 +-
 gtk/src/stockitem.hg             |   4 +-
 gtk/src/stylecontext.hg          |   8 ++--
 gtk/src/styleprovider.hg         |   4 +-
 gtk/src/switch.hg                |   4 +-
 gtk/src/table.hg                 |   4 +-
 gtk/src/targetlist.hg            |   8 ++--
 gtk/src/tearoffmenuitem.hg       |   4 +-
 gtk/src/textattributes.hg        |   6 ++-
 gtk/src/textbuffer.hg            |   8 ++--
 gtk/src/textchildanchor.hg       |   4 +-
 gtk/src/textiter.hg              |  12 ++---
 gtk/src/textmark.hg              |  10 ++--
 gtk/src/texttag.hg               |   6 +--
 gtk/src/texttagtable.hg          |   6 +--
 gtk/src/textview.hg              |   6 +--
 gtk/src/toggleaction.hg          |   4 +-
 gtk/src/togglebutton.hg          |   4 +-
 gtk/src/toggletoolbutton.hg      |   4 +-
 gtk/src/toolbar.hg               |   4 +-
 gtk/src/toolbutton.hg            |   4 +-
 gtk/src/toolitem.hg              |   4 +-
 gtk/src/toolitemgroup.hg         |   4 +-
 gtk/src/toolpalette.hg           |   6 +--
 gtk/src/toolshell.hg             |   4 +-
 gtk/src/tooltip.hg               |   4 +-
 gtk/src/treedragdest.hg          |   4 +-
 gtk/src/treedragsource.hg        |   4 +-
 gtk/src/treeiter.hg              |  22 ++++-----
 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         |  10 ++--
 gtk/src/treesortable.hg          |   4 +-
 gtk/src/treestore.hg             |   4 +-
 gtk/src/treeview.hg              |  14 +++---
 gtk/src/treeviewcolumn.hg        |   6 +--
 gtk/src/uimanager.hg             |   6 +--
 gtk/src/viewport.hg              |   4 +-
 gtk/src/volumebutton.hg          |   4 +-
 gtk/src/widget.hg                |  34 ++++++-------
 gtk/src/widgetpath.hg            |   4 +-
 gtk/src/window.hg                |   8 ++--
 gtk/src/windowgroup.hg           |   6 +--
 233 files changed, 748 insertions(+), 699 deletions(-)
---
diff --git a/gtk/src/aboutdialog.hg b/gtk/src/aboutdialog.hg
index 323184c5..846e3200 100644
--- a/gtk/src/aboutdialog.hg
+++ b/gtk/src/aboutdialog.hg
@@ -28,7 +28,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
@@ -46,9 +46,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/accelgroup.hg b/gtk/src/accelgroup.hg
index 7d9ec064..12b5bb72 100644
--- a/gtk/src/accelgroup.hg
+++ b/gtk/src/accelgroup.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/object_p.h)
@@ -37,9 +39,9 @@ namespace Gtk
  * buttons; they appear as underlined characters. See the Gtk::Label
  * constructor. Menu items can have both accelerators and mnemonics, of course.
  */
-class AccelGroup : public Glib::Object
+class GTKMM_API AccelGroup : public Glib::Object
 {
-   _CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP,Glib::Object,GObject)
+   _CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP,Glib::Object,GObject,,,GTKMM_API)
    _IGNORE(gtk_accel_group_connect, gtk_accel_group_connect_by_path, gtk_accel_group_disconnect,
            gtk_accel_group_query)
    _IGNORE_SIGNAL(accel_activate)
diff --git a/gtk/src/accellabel.hg b/gtk/src/accellabel.hg
index 03410204..ca1c16e9 100644
--- a/gtk/src/accellabel.hg
+++ b/gtk/src/accellabel.hg
@@ -30,9 +30,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class AccelLabel : public Label
+class GTKMM_API AccelLabel : public Label
 {
-  _CLASS_GTKOBJECT(AccelLabel,GtkAccelLabel,GTK_ACCEL_LABEL,Gtk::Label,GtkLabel)
+  _CLASS_GTKOBJECT(AccelLabel,GtkAccelLabel,GTK_ACCEL_LABEL,Gtk::Label,GtkLabel,,,GTKMM_API)
   _IGNORE(gtk_accel_label_set_accel_closure)
 public:
 
diff --git a/gtk/src/action.hg b/gtk/src/action.hg
index e8f2a852..ba9f1c68 100644
--- a/gtk/src/action.hg
+++ b/gtk/src/action.hg
@@ -37,12 +37,12 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class ActionGroup; //deprecated
-class Menu;
-class MenuItem;
-class ToolItem;
-class Image;
-class StockID; //deprecated
+class GTKMM_API ActionGroup; //deprecated
+class GTKMM_API Menu;
+class GTKMM_API MenuItem;
+class GTKMM_API ToolItem;
+class GTKMM_API Image;
+class GTKMM_API StockID; //deprecated
 
 /** A deprecated action which can be triggered by a menu or toolbar item.
  *
@@ -87,11 +87,11 @@ class StockID; //deprecated
  * <a href="https://developer.gnome.org/gtkmm-tutorial/stable/";>Programming with gtkmm 3</a>
  * book use Gio::SimpleAction, such as the menus and toolbars examples.
  */
-class Action
+class GTKMM_API Action
   : public Glib::Object,
     public Buildable
 {
-  _CLASS_GOBJECT(Action, GtkAction, GTK_ACTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(Action, GtkAction, GTK_ACTION, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
 
 protected:
diff --git a/gtk/src/actionable.hg b/gtk/src/actionable.hg
index 77185ba6..88cb0cad 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
  * Application.
  * @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 27c2e17b..7441ec0b 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 Bin
 {
-  _CLASS_GTKOBJECT(ActionBar, GtkActionBar, GTK_ACTION_BAR, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(ActionBar, GtkActionBar, GTK_ACTION_BAR, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Creates a new ActionBar widget.
diff --git a/gtk/src/actiongroup.hg b/gtk/src/actiongroup.hg
index 5ff58c16..bd4f2cec 100644
--- a/gtk/src/actiongroup.hg
+++ b/gtk/src/actiongroup.hg
@@ -40,11 +40,11 @@ namespace Gtk
  *
  * @deprecated Use Gio::ActionGroup and Gio::Action instead.
  */
-class ActionGroup
+class GTKMM_API ActionGroup
   : public Glib::Object,
     public Buildable
 {
-  _CLASS_GOBJECT(ActionGroup, GtkActionGroup, GTK_ACTION_GROUP, Glib::Object, GObject)
+  _CLASS_GOBJECT(ActionGroup, GtkActionGroup, GTK_ACTION_GROUP, Glib::Object, GObject, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Buildable)
 
 protected:
diff --git a/gtk/src/activatable.hg b/gtk/src/activatable.hg
index bb11899b..0b3a5a2e 100644
--- a/gtk/src/activatable.hg
+++ b/gtk/src/activatable.hg
@@ -47,9 +47,9 @@ namespace Gtk
  * @deprecated Use Gio::Action instead of Gtk::Action.
  *   Gtk::Actionable is roughly a replacement for %Gtk::Activatable.
  */
-class Activatable : public Glib::Interface
+class GTKMM_API Activatable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Activatable, GtkActivatable, GTK_ACTIVATABLE, GtkActivatableIface)
+  _CLASS_INTERFACE(Activatable, GtkActivatable, GTK_ACTIVATABLE, GtkActivatableIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(void do_set_related_action(const Glib::RefPtr<Action>& action), 
gtk_activatable_do_set_related_action,
diff --git a/gtk/src/adjustment.hg b/gtk/src/adjustment.hg
index 71be6e9b..25a334ad 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)
@@ -39,15 +41,15 @@ namespace Gtk
  * in the emission of the "value_changed" or "changed" signal respectively.
  *
  */
-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 class GTKMM_API Range;
+  friend class GTKMM_API HScrollbar;
+  friend class GTKMM_API VScrollbar;
 
 protected:
   /** Constructor to create an Adjustment object.
diff --git a/gtk/src/alignment.hg b/gtk/src/alignment.hg
index 5160509c..3f491be7 100644
--- a/gtk/src/alignment.hg
+++ b/gtk/src/alignment.hg
@@ -46,9 +46,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Alignment : public Bin
+class GTKMM_API Alignment : public Bin
 {
-  _CLASS_GTKOBJECT(Alignment,GtkAlignment,GTK_ALIGNMENT,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(Alignment,GtkAlignment,GTK_ALIGNMENT,Gtk::Bin,GtkBin,,,GTKMM_API)
   _IS_DEPRECATED
 public:
 
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 9c45785e..4db72852 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 ComboBox,
     public AppChooser
 {
-  _CLASS_GTKOBJECT(AppChooserButton, GtkAppChooserButton, GTK_APP_CHOOSER_BUTTON, ComboBox, GtkComboBox)
+  _CLASS_GTKOBJECT(AppChooserButton, GtkAppChooserButton, GTK_APP_CHOOSER_BUTTON, ComboBox, GtkComboBox, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(AppChooser)
 public:
 
diff --git a/gtk/src/appchooserdialog.hg b/gtk/src/appchooserdialog.hg
index 6079978b..827404cc 100644
--- a/gtk/src/appchooserdialog.hg
+++ b/gtk/src/appchooserdialog.hg
@@ -45,11 +45,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 c8a2edcb..a6554882 100644
--- a/gtk/src/appchooserwidget.hg
+++ b/gtk/src/appchooserwidget.hg
@@ -42,11 +42,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class AppChooserWidget
+class GTKMM_API AppChooserWidget
   : public Box,
     public AppChooser
 {
-  _CLASS_GTKOBJECT(AppChooserWidget, GtkAppChooserWidget, GTK_APP_CHOOSER_WIDGET, Box, GtkBox)
+  _CLASS_GTKOBJECT(AppChooserWidget, GtkAppChooserWidget, GTK_APP_CHOOSER_WIDGET, Box, GtkBox, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(AppChooser)
 public:
 
diff --git a/gtk/src/application.hg b/gtk/src/application.hg
index 9c1295a6..e978c858 100644
--- a/gtk/src/application.hg
+++ b/gtk/src/application.hg
@@ -38,9 +38,9 @@ typedef struct _GtkWindow GtkWindow;
 namespace Gtk
 {
 
-_WRAP_ENUM(ApplicationInhibitFlags, GtkApplicationInhibitFlags)
+_WRAP_ENUM(ApplicationInhibitFlags, GtkApplicationInhibitFlags, decl_prefix GTKMM_API)
 
-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?
@@ -93,11 +93,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:
 
diff --git a/gtk/src/applicationwindow.hg b/gtk/src/applicationwindow.hg
index affa3d0b..4dc2d2d3 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,14 +68,14 @@ 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
 {
   //TODO: At the next ABI-break, remove _NO_WRAP_FUNCTION, and the hand-coded gobj_copy() and wrap().
   // https://bugzilla.gnome.org/show_bug.cgi?id=767951
-  _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
@@ -135,6 +135,7 @@ namespace Glib
    *
    * @relates Gtk::ApplicationWindow
    */
+  GTKMM_API
   Glib::RefPtr<Gtk::ApplicationWindow> wrap(GtkApplicationWindow* object, bool take_copy = false);
 }
 _DEPRECATE_IFDEF_END
diff --git a/gtk/src/arrow.hg b/gtk/src/arrow.hg
index 7ef46437..109f88af 100644
--- a/gtk/src/arrow.hg
+++ b/gtk/src/arrow.hg
@@ -52,8 +52,8 @@ namespace Gtk
  * react to the text direction instead of “pan-left-symbolic“ and
  * “pan-right-symbolic“ which don't.
  */
-class Arrow : public Misc {
-  _CLASS_GTKOBJECT(Arrow,GtkArrow,GTK_ARROW,Gtk::Misc,GtkMisc)
+class GTKMM_API Arrow : public Misc {
+  _CLASS_GTKOBJECT(Arrow,GtkArrow,GTK_ARROW,Gtk::Misc,GtkMisc,,,GTKMM_API)
   _IS_DEPRECATED
 public:
 
diff --git a/gtk/src/aspectframe.hg b/gtk/src/aspectframe.hg
index e2a009b7..700a31a0 100644
--- a/gtk/src/aspectframe.hg
+++ b/gtk/src/aspectframe.hg
@@ -34,9 +34,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class AspectFrame : public Frame
+class GTKMM_API AspectFrame : public Frame
 {
-  _CLASS_GTKOBJECT(AspectFrame,GtkAspectFrame,GTK_ASPECT_FRAME,Gtk::Frame,GtkFrame)
+  _CLASS_GTKOBJECT(AspectFrame,GtkAspectFrame,GTK_ASPECT_FRAME,Gtk::Frame,GtkFrame,,,GTKMM_API)
 
 public:
 
diff --git a/gtk/src/assistant.hg b/gtk/src/assistant.hg
index 4add4555..09800ec1 100644
--- a/gtk/src/assistant.hg
+++ b/gtk/src/assistant.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/window_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(AssistantPageType, GtkAssistantPageType)
+_WRAP_ENUM(AssistantPageType, GtkAssistantPageType, decl_prefix GTKMM_API)
 
 /** A widget used to guide users through multi-step operations.
  *
@@ -36,9 +36,9 @@ _WRAP_ENUM(AssistantPageType, GtkAssistantPageType)
  * @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/bin.hg b/gtk/src/bin.hg
index 5e51794f..d9dde69f 100644
--- a/gtk/src/bin.hg
+++ b/gtk/src/bin.hg
@@ -33,9 +33,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Bin : public Container
+class GTKMM_API Bin : public Container
 {
-  _CLASS_GTKOBJECT(Bin,GtkBin,GTK_BIN,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Bin,GtkBin,GTK_BIN,Gtk::Container,GtkContainer,,,GTKMM_API)
 protected:
 
   /** This constructor is protected because only derived
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 14b7b7c5..6b683176 100644
--- a/gtk/src/box.hg
+++ b/gtk/src/box.hg
@@ -74,11 +74,11 @@ enum PackOptions
  * set_child_packing() to reset the pack options and padding attributes of any
  * Gtk::Box child. Use query_child_packing() to query these fields.
  */
-class Box
+class GTKMM_API Box
   : public Container,
     public Orientable
 {
-  _CLASS_GTKOBJECT(Box,GtkBox,GTK_BOX,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Box,GtkBox,GTK_BOX,Gtk::Container,GtkContainer,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
   _IGNORE(gtk_box_set_child_packing, gtk_box_query_child_packing)
 public:
diff --git a/gtk/src/buildable.hg b/gtk/src/buildable.hg
index a5e2444b..15a0a299 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 0b175d00..e094f1fd 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.
  *
@@ -72,9 +72,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
@@ -611,7 +611,7 @@ protected:
 
 private:
   void set_no_gtkmm_derived_types(bool status);
-  friend class Buildable_Class;
+  friend class GTKMM_API Buildable_Class;
 
 #m4begin
 dnl Custom-coded vfunc:
diff --git a/gtk/src/button.hg b/gtk/src/button.hg
index b9d6eecb..b3fa4d40 100644
--- a/gtk/src/button.hg
+++ b/gtk/src/button.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/bin_p.h)
 namespace Gtk
 {
 
-class StockID; //deprecated
+class GTKMM_API StockID; //deprecated
 
 //TODO: Derive from (and implement) Actionable when we can break ABI.
 
@@ -39,11 +39,11 @@ class StockID; //deprecated
  *
  * @ingroup Widgets
  */
-class Button
+class GTKMM_API Button
   : public Bin,
     public Activatable
 {
-  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Activatable)
 public:
 
diff --git a/gtk/src/buttonbox.hg b/gtk/src/buttonbox.hg
index 880e0f2e..a17b98bd 100644
--- a/gtk/src/buttonbox.hg
+++ b/gtk/src/buttonbox.hg
@@ -50,10 +50,10 @@ enum { BUTTONBOX_DEFAULT_SPACING = -1 };
  * 'outlier' status, you can set the non-homogeneous child
  * property.
  */
-class ButtonBox
+class GTKMM_API ButtonBox
   : public Box
 {
-  _CLASS_GTKOBJECT(ButtonBox,GtkButtonBox,GTK_BUTTON_BOX,Gtk::Box,GtkBox)
+  _CLASS_GTKOBJECT(ButtonBox,GtkButtonBox,GTK_BUTTON_BOX,Gtk::Box,GtkBox,,,GTKMM_API)
 public:
   //Note that we try to use the same defaul parameter value as the default property value.
   _WRAP_CTOR(ButtonBox(Orientation orientation = ORIENTATION_HORIZONTAL), gtk_button_box_new)
diff --git a/gtk/src/calendar.hg b/gtk/src/calendar.hg
index 17292862..17979428 100644
--- a/gtk/src/calendar.hg
+++ b/gtk/src/calendar.hg
@@ -27,7 +27,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(CalendarDisplayOptions, GtkCalendarDisplayOptions)
+_WRAP_ENUM(CalendarDisplayOptions, GtkCalendarDisplayOptions, decl_prefix GTKMM_API)
 
 /** Display a calendar and/or allow the user to select a date.
  *
@@ -50,9 +50,9 @@ _WRAP_ENUM(CalendarDisplayOptions, GtkCalendarDisplayOptions)
  *
  * @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 0f2cce97..cf8775a6 100644
--- a/gtk/src/cellarea.hg
+++ b/gtk/src/cellarea.hg
@@ -91,12 +91,12 @@ namespace Gtk
  *
  * @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 09146f9b..1d5a020d 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 4fdedca7..220f7583 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>
 _DEFS(gtkmm,gtk)
 _PINCLUDE(glibmm/private/interface_p.h)
@@ -34,9 +36,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(GdkEvent* event), gtk_cell_editable_start_editing)
diff --git a/gtk/src/celllayout.hg b/gtk/src/celllayout.hg
index ad5670c7..82dc7770 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 6507f3e1..37dfe79d 100644
--- a/gtk/src/cellrenderer.hg
+++ b/gtk/src/cellrenderer.hg
@@ -27,8 +27,8 @@ _PH_INCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-_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.
@@ -37,10 +37,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:
 
   _IGNORE(gtk_cell_renderer_get_size) //Deprecated
diff --git a/gtk/src/cellrendereraccel.hg b/gtk/src/cellrendereraccel.hg
index c899941e..5a7db038 100644
--- a/gtk/src/cellrendereraccel.hg
+++ b/gtk/src/cellrendereraccel.hg
@@ -26,7 +26,7 @@ _PINCLUDE(gtkmm/private/cellrenderertext_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(CellRendererAccelMode, GtkCellRendererAccelMode)
+_WRAP_ENUM(CellRendererAccelMode, GtkCellRendererAccelMode, decl_prefix GTKMM_API)
 
 /**
  * Renders a keyboard accelerator in a cell.
@@ -39,9 +39,9 @@ _WRAP_ENUM(CellRendererAccelMode, GtkCellRendererAccelMode)
  * @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:
 
   _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 e0b414bc..92b1cb91 100644
--- a/gtk/src/cellrendererpixbuf.hg
+++ b/gtk/src/cellrendererpixbuf.hg
@@ -35,7 +35,7 @@ namespace Glib
  * Needed for Gtk::CellRendererPixbuf::property_surface().
  */
 template <>
-class Value<::Cairo::RefPtr<::Cairo::Surface>> : public ValueBase_Boxed
+class GTKMM_API Value<::Cairo::RefPtr<::Cairo::Surface>> : public ValueBase_Boxed
 {
 public:
   using T = ::Cairo::Surface;
@@ -70,9 +70,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 ffa36ac3..5c69364c 100644
--- a/gtk/src/cellrendererspin.hg
+++ b/gtk/src/cellrendererspin.hg
@@ -42,9 +42,9 @@ namespace Gtk
  * @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..187b15c5 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 4495e149..cd32d571 100644
--- a/gtk/src/cellrenderertext.hg
+++ b/gtk/src/cellrenderertext.hg
@@ -29,9 +29,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 76b7528e..564afd8c 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 cc45deec..ba330edc 100644
--- a/gtk/src/cellview.hg
+++ b/gtk/src/cellview.hg
@@ -41,12 +41,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/checkbutton.hg b/gtk/src/checkbutton.hg
index 3c9e17f5..b2a9cbf9 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/checkmenuitem.hg b/gtk/src/checkmenuitem.hg
index 71d2be21..5b30d050 100644
--- a/gtk/src/checkmenuitem.hg
+++ b/gtk/src/checkmenuitem.hg
@@ -30,9 +30,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Menus
  */
-class CheckMenuItem : public MenuItem
+class GTKMM_API CheckMenuItem : public MenuItem
 {
-  _CLASS_GTKOBJECT(CheckMenuItem,GtkCheckMenuItem,GTK_CHECK_MENU_ITEM,Gtk::MenuItem,GtkMenuItem)
+  _CLASS_GTKOBJECT(CheckMenuItem,GtkCheckMenuItem,GTK_CHECK_MENU_ITEM,Gtk::MenuItem,GtkMenuItem,,,GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/clipboard.hg b/gtk/src/clipboard.hg
index 4931c5a7..60f9b723 100644
--- a/gtk/src/clipboard.hg
+++ b/gtk/src/clipboard.hg
@@ -32,7 +32,7 @@ namespace Gtk
 {
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-class TextBuffer;
+class GTKMM_API TextBuffer;
 #endif //DOXYGEN_SHOULD_SKIP_THIS
 
 /** The Clipboard object represents a clipboard of data shared between different processes or between
@@ -61,9 +61,9 @@ class TextBuffer;
  * care of determining which formats are advertised by the clipboard provider, asking for the clipboard in 
the
  * best available format and converting the results into the UTF-8 encoding.
  */
-class Clipboard : public Glib::Object
+class GTKMM_API Clipboard : public Glib::Object
 {
-   _CLASS_GOBJECT(Clipboard, GtkClipboard, GTK_CLIPBOARD, Glib::Object, GObject)
+   _CLASS_GOBJECT(Clipboard, GtkClipboard, GTK_CLIPBOARD, Glib::Object, GObject, , , GTKMM_API)
 public:
 
   _WRAP_METHOD(static Glib::RefPtr<Clipboard> get(GdkAtom selection = GDK_SELECTION_CLIPBOARD), 
gtk_clipboard_get, refreturn)
diff --git a/gtk/src/colorbutton.hg b/gtk/src/colorbutton.hg
index 5941bb34..6ea74191 100644
--- a/gtk/src/colorbutton.hg
+++ b/gtk/src/colorbutton.hg
@@ -43,10 +43,10 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ColorButton : public Button
+class GTKMM_API ColorButton : public Button
   //TODO: When we can break ABI: public ColorChooser
 {
-  _CLASS_GTKOBJECT(ColorButton, GtkColorButton, GTK_COLOR_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(ColorButton, GtkColorButton, GTK_COLOR_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
   //TODO: When we can break ABI: _IMPLEMENTS_INTERFACE(ColorChooser)
 public:
 
diff --git a/gtk/src/colorchooser.hg b/gtk/src/colorchooser.hg
index dfc040d0..29a37ca6 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 3f839bf9..7b806a92 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/colorselection.hg b/gtk/src/colorselection.hg
index 5e35068b..6e5773ec 100644
--- a/gtk/src/colorselection.hg
+++ b/gtk/src/colorselection.hg
@@ -45,9 +45,9 @@ namespace Gtk
  * @ingroup Widgets
  * @deprecated Use ColorButton or ColorChooserDialog instead.
  */
-class ColorSelection : public VBox
+class GTKMM_API ColorSelection : public VBox
 {
-  _CLASS_GTKOBJECT(ColorSelection,GtkColorSelection,GTK_COLOR_SELECTION,Gtk::VBox,GtkVBox)
+  _CLASS_GTKOBJECT(ColorSelection,GtkColorSelection,GTK_COLOR_SELECTION,Gtk::VBox,GtkVBox,,,GTKMM_API)
   _IS_DEPRECATED
   _IGNORE(gtk_color_selection_get_current_color, gtk_color_selection_get_previous_color)
 public:
@@ -102,9 +102,9 @@ public:
  * @ingroup Dialogs
  * @deprecated Use ColorChooserDialog instead.
  */
-class ColorSelectionDialog : public Dialog
+class GTKMM_API ColorSelectionDialog : public Dialog
 {
-  
_CLASS_GTKOBJECT(ColorSelectionDialog,GtkColorSelectionDialog,GTK_COLOR_SELECTION_DIALOG,Gtk::Dialog,GtkDialog)
+  
_CLASS_GTKOBJECT(ColorSelectionDialog,GtkColorSelectionDialog,GTK_COLOR_SELECTION_DIALOG,Gtk::Dialog,GtkDialog,,,GTKMM_API)
   _UNMANAGEABLE()
   _IS_DEPRECATED
 public:
diff --git a/gtk/src/combobox.hg b/gtk/src/combobox.hg
index 62cc24c2..02e3d151 100644
--- a/gtk/src/combobox.hg
+++ b/gtk/src/combobox.hg
@@ -59,12 +59,12 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ComboBox
+class GTKMM_API ComboBox
 : public Bin,
   public CellLayout,
   public CellEditable
 {
-  _CLASS_GTKOBJECT(ComboBox, GtkComboBox, GTK_COMBO_BOX, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(ComboBox, GtkComboBox, GTK_COMBO_BOX, Gtk::Bin, GtkBin, , , 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/container.hg b/gtk/src/container.hg
index e8b12aca..fd424a00 100644
--- a/gtk/src/container.hg
+++ b/gtk/src/container.hg
@@ -35,8 +35,8 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 namespace Gtk
 {
 
-class Adjustment;
-class Label;
+class GTKMM_API Adjustment;
+class GTKMM_API Label;
 
 /** Abstract container class
  *
@@ -52,9 +52,9 @@ class Label;
  *
  * @ingroup Widgets
  */
-class Container : public Widget
+class GTKMM_API Container : public Widget
 {
-  _CLASS_GTKOBJECT(Container,GtkContainer,GTK_CONTAINER,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Container,GtkContainer,GTK_CONTAINER,Gtk::Widget,GtkWidget,,,GTKMM_API)
   _IGNORE(gtk_container_child_set_valist, gtk_container_get_focus_chain)
 public:
 
diff --git a/gtk/src/cssprovider.hg b/gtk/src/cssprovider.hg
index dc314dd5..9615398a 100644
--- a/gtk/src/cssprovider.hg
+++ b/gtk/src/cssprovider.hg
@@ -30,7 +30,7 @@ namespace Gtk
  *
  * @newin{3,16}
  */
-_WRAP_GERROR(CssProviderError, GtkCssProviderError, GTK_CSS_PROVIDER_ERROR)
+_WRAP_GERROR(CssProviderError, GtkCssProviderError, GTK_CSS_PROVIDER_ERROR, decl_prefix GTKMM_API)
 
 /** CSS-like styling for widgets, implementing the StyleProvider base class.
  *
@@ -45,11 +45,11 @@ _WRAP_GERROR(CssProviderError, GtkCssProviderError, GTK_CSS_PROVIDER_ERROR)
  *
  * @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 4e585f05..df193700 100644
--- a/gtk/src/csssection.hg
+++ b/gtk/src/csssection.hg
@@ -14,6 +14,8 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/refptr.h>
 #include <giomm/file.h>
 
@@ -25,7 +27,7 @@ typedef struct _GtkCssSection GtkCssSection;
 
 namespace Gtk
 {
-_WRAP_ENUM(CssSectionType, GtkCssSectionType)
+_WRAP_ENUM(CssSectionType, GtkCssSectionType, decl_prefix GTKMM_API)
 
 /** Defines a part of a CSS document.
  * Because sections are nested into one another, you can use get_parent()
@@ -36,9 +38,9 @@ _WRAP_ENUM(CssSectionType, GtkCssSectionType)
  *
  * @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 7de09f67..4ac4f401 100644
--- a/gtk/src/dialog.hg
+++ b/gtk/src/dialog.hg
@@ -34,8 +34,8 @@ namespace Gtk
  */
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(DialogFlags, GtkDialogFlags)
-_WRAP_ENUM(ResponseType, GtkResponseType)
+_WRAP_ENUM(DialogFlags, GtkDialogFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(ResponseType, GtkResponseType, decl_prefix GTKMM_API)
 
 /** Create popup windows.
  *
@@ -66,9 +66,9 @@ _WRAP_ENUM(ResponseType, GtkResponseType)
  *
  * @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/drawingarea.hg b/gtk/src/drawingarea.hg
index 3a783471..023d87e4 100644
--- a/gtk/src/drawingarea.hg
+++ b/gtk/src/drawingarea.hg
@@ -28,9 +28,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/editable.hg b/gtk/src/editable.hg
index e0031665..39ee8eb4 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)
@@ -39,9 +41,9 @@ namespace Gtk
  * 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(void cut_clipboard(), gtk_editable_cut_clipboard)
diff --git a/gtk/src/entry.hg b/gtk/src/entry.hg
index adc61a66..7dac894c 100644
--- a/gtk/src/entry.hg
+++ b/gtk/src/entry.hg
@@ -34,7 +34,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(EntryIconPosition, GtkEntryIconPosition)
+_WRAP_ENUM(EntryIconPosition, GtkEntryIconPosition, decl_prefix GTKMM_API)
 
 /** A single line text entry field.
  *
@@ -48,12 +48,12 @@ _WRAP_ENUM(EntryIconPosition, GtkEntryIconPosition)
  *
  * @ingroup Widgets
  */
-class Entry
+class GTKMM_API Entry
 : public Widget,
   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:
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 8d8b3dc0..7fbfab79 100644
--- a/gtk/src/entrycompletion.hg
+++ b/gtk/src/entrycompletion.hg
@@ -26,7 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class Entry;
+class GTKMM_API Entry;
 
 /** Completion functionality for Gtk::Entry.
  *
@@ -56,12 +56,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 0b0974bb..bcdb30bf 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,57 +28,57 @@ namespace Gtk
 
 _CC_INCLUDE(gtk/gtk.h)
 
-_WRAP_ENUM(AccelFlags, GtkAccelFlags)
-_WRAP_ENUM(Align, GtkAlign)
-_WRAP_ENUM(ArrowType, GtkArrowType)
-_WRAP_ENUM(AttachOptions, GtkAttachOptions)
-_WRAP_ENUM(ButtonBoxStyle, GtkButtonBoxStyle)
-_WRAP_ENUM(DeleteType, GtkDeleteType)
-_WRAP_ENUM(DirectionType, GtkDirectionType)
+_WRAP_ENUM(AccelFlags, GtkAccelFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(Align, GtkAlign, decl_prefix GTKMM_API)
+_WRAP_ENUM(ArrowType, GtkArrowType, decl_prefix GTKMM_API)
+_WRAP_ENUM(AttachOptions, GtkAttachOptions, decl_prefix GTKMM_API)
+_WRAP_ENUM(ButtonBoxStyle, GtkButtonBoxStyle, decl_prefix GTKMM_API)
+_WRAP_ENUM(DeleteType, GtkDeleteType, decl_prefix GTKMM_API)
+_WRAP_ENUM(DirectionType, GtkDirectionType, decl_prefix GTKMM_API)
 
 //TODO: let _WRAP_ENUM() take a deprecated option.
 /**
  * @deprecated This is not used in the gtkmm API.
  */
-_WRAP_ENUM(ExpanderStyle, GtkExpanderStyle)
-
-_WRAP_ENUM(BuiltinIconSize, 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(CornerType, GtkCornerType)
-_WRAP_ENUM(PackType, GtkPackType)
-_WRAP_ENUM(PathPriorityType, GtkPathPriorityType)
-_WRAP_ENUM(PathType, GtkPathType)
-_WRAP_ENUM(PlacesOpenFlags, GtkPlacesOpenFlags)
-_WRAP_ENUM(PolicyType, GtkPolicyType)
-_WRAP_ENUM(PositionType, GtkPositionType)
-_WRAP_ENUM(ReliefStyle, GtkReliefStyle)
-_WRAP_ENUM(ResizeMode, GtkResizeMode)
-_WRAP_ENUM(RevealerTransitionType, GtkRevealerTransitionType)
-_WRAP_ENUM(ScrollType, GtkScrollType)
-_WRAP_ENUM(SelectionMode, GtkSelectionMode)
-_WRAP_ENUM(ShadowType, GtkShadowType)
-_WRAP_ENUM(StackTransitionType, GtkStackTransitionType)
-_WRAP_ENUM(StateType, GtkStateType)
-_WRAP_ENUM(TargetFlags, GtkTargetFlags)
-_WRAP_ENUM(ToolbarStyle, GtkToolbarStyle)
-_WRAP_ENUM(WindowPosition,GtkWindowPosition)
-_WRAP_ENUM(WindowType,GtkWindowType)
-_WRAP_ENUM(WrapMode, GtkWrapMode)
-_WRAP_ENUM(SortType, GtkSortType)
-_WRAP_ENUM(PageOrientation, GtkPageOrientation)
-_WRAP_ENUM(SensitivityType, GtkSensitivityType)
-_WRAP_ENUM(SizeRequestMode, GtkSizeRequestMode)
-_WRAP_ENUM(RegionFlags, GtkRegionFlags)
-_WRAP_ENUM(JunctionSides, GtkJunctionSides)
-_WRAP_ENUM(StateFlags, GtkStateFlags)
-_WRAP_ENUM(InputPurpose, GtkInputPurpose)
-_WRAP_ENUM(InputHints, GtkInputHints)
-_WRAP_ENUM(BaselinePosition, GtkBaselinePosition)
+_WRAP_ENUM(ExpanderStyle, GtkExpanderStyle, decl_prefix GTKMM_API)
+
+_WRAP_ENUM(BuiltinIconSize, 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(CornerType, GtkCornerType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PackType, GtkPackType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PathPriorityType, GtkPathPriorityType, decl_prefix GTKMM_API)
+_WRAP_ENUM(PathType, GtkPathType, 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(ReliefStyle, GtkReliefStyle, decl_prefix GTKMM_API)
+_WRAP_ENUM(ResizeMode, GtkResizeMode, 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(ShadowType, GtkShadowType, decl_prefix GTKMM_API)
+_WRAP_ENUM(StackTransitionType, GtkStackTransitionType, decl_prefix GTKMM_API)
+_WRAP_ENUM(StateType, GtkStateType, decl_prefix GTKMM_API)
+_WRAP_ENUM(TargetFlags, GtkTargetFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(ToolbarStyle, GtkToolbarStyle, decl_prefix GTKMM_API)
+_WRAP_ENUM(WindowPosition,GtkWindowPosition, decl_prefix GTKMM_API)
+_WRAP_ENUM(WindowType,GtkWindowType, 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(RegionFlags, GtkRegionFlags, decl_prefix GTKMM_API)
+_WRAP_ENUM(JunctionSides, GtkJunctionSides, 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)
 
 
 /* We use a class to implement the GtkIconSize enum, because you can register
@@ -85,14 +87,14 @@ _WRAP_ENUM(BaselinePosition, GtkBaselinePosition)
  */
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-class Settings;
+class GTKMM_API Settings;
 #endif //DOXYGEN_SHOULD_SKIP_THIS
 
 /**
  * Represents registered icon sizes.
  * You can also use a Gtk::BuiltinIconSize instead of an IconSize.
  */
-class IconSize
+class GTKMM_API IconSize
 {
 private:
   int size_;
@@ -205,7 +207,7 @@ namespace Glib
 {
 
 template <>
-class Value<Gtk::IconSize> : public Glib::Value_Enum<Gtk::IconSize>
+class GTKMM_API Value<Gtk::IconSize> : public Glib::Value_Enum<Gtk::IconSize>
 {
 public:
   static GType value_type() G_GNUC_CONST;
@@ -219,6 +221,7 @@ namespace Gtk
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 //We need this because we can't just use floats for enum value.
+GTKMM_API
 float _gtkmm_align_float_from_enum(Align value);
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 
diff --git a/gtk/src/eventbox.hg b/gtk/src/eventbox.hg
index c653f701..087e5f69 100644
--- a/gtk/src/eventbox.hg
+++ b/gtk/src/eventbox.hg
@@ -35,9 +35,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class EventBox : public Bin
+class GTKMM_API EventBox : public Bin
 {
-  _CLASS_GTKOBJECT(EventBox,GtkEventBox,GTK_EVENT_BOX,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(EventBox,GtkEventBox,GTK_EVENT_BOX,Gtk::Bin,GtkBin,,,GTKMM_API)
 public:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/eventcontroller.hg b/gtk/src/eventcontroller.hg
index 16ce60ea..c101c714 100644
--- a/gtk/src/eventcontroller.hg
+++ b/gtk/src/eventcontroller.hg
@@ -42,7 +42,7 @@ namespace Gtk
  * @newin{3,14}
  */
 
-_WRAP_ENUM(PropagationPhase, GtkPropagationPhase)
+_WRAP_ENUM(PropagationPhase, GtkPropagationPhase, decl_prefix GTKMM_API)
 
 /** Self-contained handler of series of events.
  *
@@ -54,9 +54,9 @@ _WRAP_ENUM(PropagationPhase, GtkPropagationPhase)
  *
  * @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/expander.hg b/gtk/src/expander.hg
index f3854ee6..3d4936ea 100644
--- a/gtk/src/expander.hg
+++ b/gtk/src/expander.hg
@@ -50,9 +50,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Expander : public Bin
+class GTKMM_API Expander : public Bin
 {
-  _CLASS_GTKOBJECT(Expander, GtkExpander, GTK_EXPANDER, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(Expander, GtkExpander, GTK_EXPANDER, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Creates a new Expander.
diff --git a/gtk/src/filechooser.hg b/gtk/src/filechooser.hg
index 2f962579..5aeb085e 100644
--- a/gtk/src/filechooser.hg
+++ b/gtk/src/filechooser.hg
@@ -27,15 +27,15 @@ _PINCLUDE(glibmm/private/interface_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(FileChooserAction, GtkFileChooserAction)
-_WRAP_ENUM(FileChooserConfirmation, GtkFileChooserConfirmation)
+_WRAP_ENUM(FileChooserAction, GtkFileChooserAction, decl_prefix GTKMM_API)
+_WRAP_ENUM(FileChooserConfirmation, GtkFileChooserConfirmation, decl_prefix GTKMM_API)
 
 //Note that GTK_FILE_SYSTEM_ERROR is not currently public GTK+ API and should
 //never be instantiated by the GTK+ C API.
 
 /** 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
@@ -60,9 +60,9 @@ _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_METHOD(void set_action(FileChooserAction action), gtk_file_chooser_set_action)
diff --git a/gtk/src/filechooserbutton.hg b/gtk/src/filechooserbutton.hg
index fec10392..6f4ac9bd 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 HBox, //Note: The C object derives from GtkBox.
     public FileChooser
 {
-  _CLASS_GTKOBJECT(FileChooserButton, GtkFileChooserButton, GTK_FILE_CHOOSER_BUTTON, Gtk::HBox, GtkHBox)
+  _CLASS_GTKOBJECT(FileChooserButton, GtkFileChooserButton, GTK_FILE_CHOOSER_BUTTON, Gtk::HBox, GtkHBox, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
 public:
 
diff --git a/gtk/src/filechooserdialog.hg b/gtk/src/filechooserdialog.hg
index 953d5b9a..4fe18dc6 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 eaf8845c..a595f352 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 0f081971..058e6c67 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 VBox,
   public FileChooser
 {
-  _CLASS_GTKOBJECT(FileChooserWidget, GtkFileChooserWidget, GTK_FILE_CHOOSER_WIDGET, Gtk::VBox, GtkVBox)
+  _CLASS_GTKOBJECT(FileChooserWidget, GtkFileChooserWidget, GTK_FILE_CHOOSER_WIDGET, Gtk::VBox, GtkVBox, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(FileChooser)
 public:
   _CTOR_DEFAULT;
diff --git a/gtk/src/filefilter.hg b/gtk/src/filefilter.hg
index c78ac619..23e85522 100644
--- a/gtk/src/filefilter.hg
+++ b/gtk/src/filefilter.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)
@@ -23,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(FileFilterFlags, GtkFileFilterFlags)
+_WRAP_ENUM(FileFilterFlags, GtkFileFilterFlags, decl_prefix GTKMM_API)
 
 /** A filter for selecting a file subset.
  *
@@ -40,9 +42,9 @@ _WRAP_ENUM(FileFilterFlags, GtkFileFilterFlags)
  *
  * Filters are used by adding them to a Gtk::FileChooser. See Gtk::FileChooser::add_filter().
  */
-class FileFilter : public Glib::Object
+class GTKMM_API FileFilter : public Glib::Object
 {
-  _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()
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/fixed.hg b/gtk/src/fixed.hg
index 5a78957f..eaa2604d 100644
--- a/gtk/src/fixed.hg
+++ b/gtk/src/fixed.hg
@@ -37,9 +37,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Fixed : public Container
+class GTKMM_API Fixed : public Container
 {
-  _CLASS_GTKOBJECT(Fixed,GtkFixed,GTK_FIXED,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Fixed,GtkFixed,GTK_FIXED,Gtk::Container,GtkContainer,,,GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/flowbox.hg b/gtk/src/flowbox.hg
index c562730e..dffb3ef6 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 Container,
     public Orientable
 {
-  _CLASS_GTKOBJECT(FlowBox, GtkFlowBox, GTK_FLOW_BOX, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(FlowBox, GtkFlowBox, GTK_FLOW_BOX, Gtk::Container, GtkContainer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
 
diff --git a/gtk/src/flowboxchild.hg b/gtk/src/flowboxchild.hg
index 0b7583ad..00deaac0 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 Bin
 {
-  _CLASS_GTKOBJECT(FlowBoxChild, GtkFlowBoxChild, GTK_FLOW_BOX_CHILD, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(FlowBoxChild, GtkFlowBoxChild, GTK_FLOW_BOX_CHILD, Gtk::Bin, GtkBin, , , 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 c313b659..69edf5ae 100644
--- a/gtk/src/fontbutton.hg
+++ b/gtk/src/fontbutton.hg
@@ -45,11 +45,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class FontButton
+class GTKMM_API FontButton
   : public Button
   //TODO: When we can break ABI: public FontChooser
 {
-  _CLASS_GTKOBJECT(FontButton, GtkFontButton, GTK_FONT_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(FontButton, GtkFontButton, GTK_FONT_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
   //TODO: When we can break ABI: _IMPLEMENTS_INTERFACE(FontChooser)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/fontchooser.hg b/gtk/src/fontchooser.hg
index ad3a012d..0978170b 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,9 +50,9 @@ 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_METHOD(Glib::RefPtr<Pango::FontFamily> get_font_family(), gtk_font_chooser_get_font_family, 
refreturn)
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 2e4751f5..e8ab93d1 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 Box,
     public FontChooser
 {
-  _CLASS_GTKOBJECT(FontChooserWidget, GtkFontChooserWidget, GTK_FONT_CHOOSER_WIDGET, Gtk::Box, GtkBox)
+  _CLASS_GTKOBJECT(FontChooserWidget, GtkFontChooserWidget, GTK_FONT_CHOOSER_WIDGET, Gtk::Box, GtkBox, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(FontChooser)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/fontselection.hg b/gtk/src/fontselection.hg
index a56e2d48..2b4d9e28 100644
--- a/gtk/src/fontselection.hg
+++ b/gtk/src/fontselection.hg
@@ -31,10 +31,10 @@ _PINCLUDE(gtkmm/private/dialog_p.h)
 namespace Gtk
 {
 
-class Button;
-class Entry;
-class TreeView;
-class RadioButton;
+class GTKMM_API Button;
+class GTKMM_API Entry;
+class GTKMM_API TreeView;
+class GTKMM_API RadioButton;
 
 
 /** A widget for selecting fonts.
@@ -47,9 +47,9 @@ class RadioButton;
  * @deprecated Use FontChooser instead.
  * @ingroup Widgets
  */
-class FontSelection : public VBox
+class GTKMM_API FontSelection : public VBox
 {
-  _CLASS_GTKOBJECT(FontSelection,GtkFontSelection,GTK_FONT_SELECTION,Gtk::VBox,GtkVBox)
+  _CLASS_GTKOBJECT(FontSelection,GtkFontSelection,GTK_FONT_SELECTION,Gtk::VBox,GtkVBox,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT()
@@ -100,9 +100,9 @@ public:
  * @deprecated Use FontChooserDialog instead.
  * @ingroup Dialogs
  */
-class FontSelectionDialog : public Dialog
+class GTKMM_API FontSelectionDialog : public Dialog
 {
-  
_CLASS_GTKOBJECT(FontSelectionDialog,GtkFontSelectionDialog,GTK_FONT_SELECTION_DIALOG,Gtk::Dialog,GtkDialog)
+  
_CLASS_GTKOBJECT(FontSelectionDialog,GtkFontSelectionDialog,GTK_FONT_SELECTION_DIALOG,Gtk::Dialog,GtkDialog,,,GTKMM_API)
   _IS_DEPRECATED
   _IGNORE(gtk_font_selection_dialog_get_font_selection)
   _UNMANAGEABLE()
diff --git a/gtk/src/frame.hg b/gtk/src/frame.hg
index d76db3c2..981c18ce 100644
--- a/gtk/src/frame.hg
+++ b/gtk/src/frame.hg
@@ -37,9 +37,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Frame : public Bin
+class GTKMM_API Frame : public Bin
 {
-  _CLASS_GTKOBJECT(Frame,GtkFrame,GTK_FRAME,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(Frame,GtkFrame,GTK_FRAME,Gtk::Bin,GtkBin,,,GTKMM_API)
 public:
 
   _CTOR_DEFAULT()
diff --git a/gtk/src/gesture.hg b/gtk/src/gesture.hg
index 56d2c786..5c6b240c 100644
--- a/gtk/src/gesture.hg
+++ b/gtk/src/gesture.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/eventcontroller_p.h)
 
 namespace Gtk
 {
-_WRAP_ENUM(EventSequenceState, GtkEventSequenceState)
+_WRAP_ENUM(EventSequenceState, GtkEventSequenceState, decl_prefix GTKMM_API)
 
 /** Abstract base class for gestures.
  *
@@ -111,9 +111,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/gesturedrag.hg b/gtk/src/gesturedrag.hg
index 4794eff2..be2168e4 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:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturelongpress.hg b/gtk/src/gesturelongpress.hg
index 0f238b59..45d2e712 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:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturemultipress.hg b/gtk/src/gesturemultipress.hg
index ce7213df..705c7863 100644
--- a/gtk/src/gesturemultipress.hg
+++ b/gtk/src/gesturemultipress.hg
@@ -39,9 +39,9 @@ namespace Gtk
  *
  * @ingroup Gestures
  */
-class GestureMultiPress : public GestureSingle
+class GTKMM_API GestureMultiPress : public GestureSingle
 {
-  _CLASS_GOBJECT(GestureMultiPress, GtkGestureMultiPress, GTK_GESTURE_MULTI_PRESS, GestureSingle, 
GtkGestureSingle)
+  _CLASS_GOBJECT(GestureMultiPress, GtkGestureMultiPress, GTK_GESTURE_MULTI_PRESS, GestureSingle, 
GtkGestureSingle, , , GTKMM_API)
 
 protected:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturepan.hg b/gtk/src/gesturepan.hg
index 41a8d26c..31092183 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 5305f605..21a85085 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:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturesingle.hg b/gtk/src/gesturesingle.hg
index 777cb902..849803f7 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/gestureswipe.hg b/gtk/src/gestureswipe.hg
index 0e13cad1..f5d536ae 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:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/gesturezoom.hg b/gtk/src/gesturezoom.hg
index 8b505d09..0d075976 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:
   /** There is no create() method that corresponds to this constructor,
diff --git a/gtk/src/glarea.hg b/gtk/src/glarea.hg
index 6392ac92..e81f8c75 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 1e5e015a..130c7330 100644
--- a/gtk/src/grid.hg
+++ b/gtk/src/grid.hg
@@ -45,11 +45,11 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class Grid
+class GTKMM_API Grid
   : public Container,
     public Orientable
 {
-  _CLASS_GTKOBJECT(Grid, GtkGrid, GTK_GRID, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(Grid, GtkGrid, GTK_GRID, Gtk::Container, GtkContainer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/handlebox.hg b/gtk/src/handlebox.hg
index b2fc2ff5..ed1e8639 100644
--- a/gtk/src/handlebox.hg
+++ b/gtk/src/handlebox.hg
@@ -45,9 +45,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class HandleBox : public Bin
+class GTKMM_API HandleBox : public Bin
 {
-  _CLASS_GTKOBJECT(HandleBox,GtkHandleBox,GTK_HANDLE_BOX,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(HandleBox,GtkHandleBox,GTK_HANDLE_BOX,Gtk::Bin,GtkBin,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/headerbar.hg b/gtk/src/headerbar.hg
index 5afba895..513a3062 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 Container
 {
-  _CLASS_GTKOBJECT(HeaderBar, GtkHeaderBar, GTK_HEADER_BAR, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(HeaderBar, GtkHeaderBar, GTK_HEADER_BAR, Gtk::Container, GtkContainer, , , GTKMM_API)
 public:
 
   /** Create a new HeaderBar widget.
diff --git a/gtk/src/hvbox.hg b/gtk/src/hvbox.hg
index 091ea326..0aba0065 100644
--- a/gtk/src/hvbox.hg
+++ b/gtk/src/hvbox.hg
@@ -41,9 +41,9 @@ namespace Gtk
  * @deprecated Use Box instead, which is a very quick and easy change. But we recommend switching to Grid, 
since
  * Box will go away eventually.
  */
-class VBox : public Box
+class GTKMM_API VBox : public Box
 {
-  _CLASS_GTKOBJECT(VBox,GtkVBox,GTK_VBOX,Gtk::Box,GtkBox)
+  _CLASS_GTKOBJECT(VBox,GtkVBox,GTK_VBOX,Gtk::Box,GtkBox,,,GTKMM_API)
   //TODO: Do this when we can stop using this as a base class elsewhere, when we break ABI: _IS_DEPRECATED
 public:
 
@@ -73,9 +73,9 @@ public:
  * @deprecated Use Box instead, which is a very quick and easy change. But we recommend switching to Grid, 
since
  * Box will go away eventually.
  */
-class HBox : public Box
+class GTKMM_API HBox : public Box
 {
-  _CLASS_GTKOBJECT(HBox,GtkHBox,GTK_HBOX,Gtk::Box,GtkBox)
+  _CLASS_GTKOBJECT(HBox,GtkHBox,GTK_HBOX,Gtk::Box,GtkBox,,,GTKMM_API)
   //TODO: Do this when we can stop using this as a base class elsewhere, when we break ABI: _IS_DEPRECATED
 public:
 
diff --git a/gtk/src/hvbuttonbox.hg b/gtk/src/hvbuttonbox.hg
index 8e103b76..b85e15db 100644
--- a/gtk/src/hvbuttonbox.hg
+++ b/gtk/src/hvbuttonbox.hg
@@ -41,9 +41,9 @@ namespace Gtk
  *
  * @deprecated Use ButtonBox instead.
  */
-class VButtonBox : public ButtonBox
+class GTKMM_API VButtonBox : public ButtonBox
 {
-  _CLASS_GTKOBJECT(VButtonBox,GtkVButtonBox,GTK_VBUTTON_BOX,Gtk::ButtonBox,GtkButtonBox)
+  _CLASS_GTKOBJECT(VButtonBox,GtkVButtonBox,GTK_VBUTTON_BOX,Gtk::ButtonBox,GtkButtonBox,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   explicit VButtonBox(ButtonBoxStyle layout = BUTTONBOX_EDGE, int spacing = BUTTONBOX_DEFAULT_SPACING);
@@ -66,9 +66,9 @@ public:
  *
  * @deprecated Use ButtonBox instead.
  */
-class HButtonBox : public ButtonBox
+class GTKMM_API HButtonBox : public ButtonBox
 {
-  _CLASS_GTKOBJECT(HButtonBox,GtkHButtonBox,GTK_HBUTTON_BOX,Gtk::ButtonBox,GtkButtonBox)
+  _CLASS_GTKOBJECT(HButtonBox,GtkHButtonBox,GTK_HBUTTON_BOX,Gtk::ButtonBox,GtkButtonBox,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   explicit HButtonBox(ButtonBoxStyle layout = BUTTONBOX_EDGE, int spacing = BUTTONBOX_DEFAULT_SPACING);
diff --git a/gtk/src/hvpaned.hg b/gtk/src/hvpaned.hg
index 1c7469ff..b134a42d 100644
--- a/gtk/src/hvpaned.hg
+++ b/gtk/src/hvpaned.hg
@@ -37,9 +37,9 @@ namespace Gtk
  *
  * @deprecated Use Paned instead.
  */
-class HPaned : public Paned
+class GTKMM_API HPaned : public Paned
 {
-  _CLASS_GTKOBJECT(HPaned,GtkHPaned,GTK_HPANED,Gtk::Paned,GtkPaned)
+  _CLASS_GTKOBJECT(HPaned,GtkHPaned,GTK_HPANED,Gtk::Paned,GtkPaned,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT()
@@ -54,9 +54,9 @@ public:
  *
  * @deprecated Use Paned instead.
  */
-class VPaned : public Paned
+class GTKMM_API VPaned : public Paned
 {
-  _CLASS_GTKOBJECT(VPaned,GtkVPaned,GTK_VPANED,Gtk::Paned,GtkPaned)
+  _CLASS_GTKOBJECT(VPaned,GtkVPaned,GTK_VPANED,Gtk::Paned,GtkPaned,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/hvscale.hg b/gtk/src/hvscale.hg
index 8aef8f3a..110cf835 100644
--- a/gtk/src/hvscale.hg
+++ b/gtk/src/hvscale.hg
@@ -42,9 +42,9 @@ namespace Gtk
  *
  * @deprecated Use Scale instead.
  */
-class VScale : public Scale
+class GTKMM_API VScale : public Scale
 {
-  _CLASS_GTKOBJECT(VScale,GtkVScale,GTK_VSCALE,Gtk::Scale,GtkScale)
+  _CLASS_GTKOBJECT(VScale,GtkVScale,GTK_VSCALE,Gtk::Scale,GtkScale,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   VScale();
@@ -72,9 +72,9 @@ public:
  *
  * @deprecated Use Scale instead.
  */
-class HScale : public Scale
+class GTKMM_API HScale : public Scale
 {
-  _CLASS_GTKOBJECT(HScale,GtkHScale,GTK_HSCALE,Gtk::Scale,GtkScale)
+  _CLASS_GTKOBJECT(HScale,GtkHScale,GTK_HSCALE,Gtk::Scale,GtkScale,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   HScale();
diff --git a/gtk/src/hvscrollbar.hg b/gtk/src/hvscrollbar.hg
index dc6f0438..a78afb3b 100644
--- a/gtk/src/hvscrollbar.hg
+++ b/gtk/src/hvscrollbar.hg
@@ -45,9 +45,9 @@ namespace Gtk
  *
  * @deprecated Use Scrollbar instead.
  */
-class VScrollbar : public Scrollbar
+class GTKMM_API VScrollbar : public Scrollbar
 {
-  _CLASS_GTKOBJECT(VScrollbar,GtkVScrollbar,GTK_VSCROLLBAR,Gtk::Scrollbar,GtkScrollbar)
+  _CLASS_GTKOBJECT(VScrollbar,GtkVScrollbar,GTK_VSCROLLBAR,Gtk::Scrollbar,GtkScrollbar,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   VScrollbar();
@@ -71,9 +71,9 @@ public:
  *
  * @deprecated Use Scrollbar instead.
  */
-class HScrollbar : public Scrollbar
+class GTKMM_API HScrollbar : public Scrollbar
 {
-  _CLASS_GTKOBJECT(HScrollbar,GtkHScrollbar,GTK_HSCROLLBAR,Gtk::Scrollbar,GtkScrollbar)
+  _CLASS_GTKOBJECT(HScrollbar,GtkHScrollbar,GTK_HSCROLLBAR,Gtk::Scrollbar,GtkScrollbar,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   HScrollbar();
diff --git a/gtk/src/hvseparator.hg b/gtk/src/hvseparator.hg
index 95835cbf..207abbb0 100644
--- a/gtk/src/hvseparator.hg
+++ b/gtk/src/hvseparator.hg
@@ -41,9 +41,9 @@ namespace Gtk
  *
  * @deprecated Use Separator instead.
  */
-class VSeparator : public Separator
+class GTKMM_API VSeparator : public Separator
 {
-  _CLASS_GTKOBJECT(VSeparator,GtkVSeparator,GTK_VSEPARATOR,Gtk::Separator,GtkSeparator)
+  _CLASS_GTKOBJECT(VSeparator,GtkVSeparator,GTK_VSEPARATOR,Gtk::Separator,GtkSeparator,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT
@@ -63,9 +63,9 @@ public:
  *
  * @deprecated Use Separator instead.
  */
-class HSeparator : public Separator
+class GTKMM_API HSeparator : public Separator
 {
-  _CLASS_GTKOBJECT(HSeparator,GtkHSeparator,GTK_HSEPARATOR,Gtk::Separator,GtkSeparator)
+  _CLASS_GTKOBJECT(HSeparator,GtkHSeparator,GTK_HSEPARATOR,Gtk::Separator,GtkSeparator,,,GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/iconfactory.hg b/gtk/src/iconfactory.hg
index edf42a13..1cfe02a2 100644
--- a/gtk/src/iconfactory.hg
+++ b/gtk/src/iconfactory.hg
@@ -37,9 +37,9 @@ namespace Gtk
 
 /** @deprecated Use Gtk::IconTheme instead.
  */
-class IconFactory : public Glib::Object
+class GTKMM_API IconFactory : public Glib::Object
 {
-   _CLASS_GOBJECT(IconFactory, GtkIconFactory, GTK_ICON_FACTORY, Glib::Object, GObject)
+   _CLASS_GOBJECT(IconFactory, GtkIconFactory, GTK_ICON_FACTORY, Glib::Object, GObject, , , GTKMM_API)
    _IGNORE(gtk_icon_factory_lookup)
 protected:
 
diff --git a/gtk/src/iconinfo.hg b/gtk/src/iconinfo.hg
index 753e95df..0b010641 100644
--- a/gtk/src/iconinfo.hg
+++ b/gtk/src/iconinfo.hg
@@ -30,11 +30,11 @@ _DEFS(gtkmm,gtk)
 namespace Gtk
 {
 
-class IconTheme;
+class GTKMM_API IconTheme;
 
-class IconInfo
+class GTKMM_API IconInfo
 {
-  _CLASS_BOXEDTYPE(IconInfo, GtkIconInfo, NONE, gtk_icon_info_ref, g_object_unref)
+  _CLASS_BOXEDTYPE(IconInfo, GtkIconInfo, NONE, gtk_icon_info_ref, g_object_unref, GTKMM_API)
   _IGNORE(gtk_icon_info_get_attach_points, gtk_icon_info_copy, gtk_icon_info_free)
 public:
 
diff --git a/gtk/src/iconset.hg b/gtk/src/iconset.hg
index 24f8a864..ff9a2de4 100644
--- a/gtk/src/iconset.hg
+++ b/gtk/src/iconset.hg
@@ -34,8 +34,8 @@ _IS_DEPRECATED // This whole file is deprecated.
 namespace Gtk
 {
 
-class StyleContext;
-class Widget;
+class GTKMM_API StyleContext;
+class GTKMM_API Widget;
 
 
 
@@ -44,11 +44,11 @@ class Widget;
  * Icons in an icon factory are named by a stock ID, which is a simple string identifying the icon. Each 
GtkStyle has a list of GtkIconFactory derived from the current theme; those icon factories are consulted 
first when searching for an icon. If the theme doesn't set a particular icon, GTK+ looks for the icon in a 
list of default icon factories, maintained by gtk_icon_factory_add_default() and 
gtk_icon_factory_remove_default(). Applications with icons should add a default icon factory with their 
icons, which will allow themes to override the icons for the application.
  * @deprecated Use Gtk::IconTheme instead.
  */
-class IconSet final
+class GTKMM_API IconSet final
 {
   //GtkIconSet is registered as a boxed type, but it has ref/unref functions instead of copy/free,
   //so we use it via RefPtr.
-  _CLASS_OPAQUE_REFCOUNTED(IconSet, GtkIconSet, gtk_icon_set_new, gtk_icon_set_ref, gtk_icon_set_unref)
+  _CLASS_OPAQUE_REFCOUNTED(IconSet, GtkIconSet, gtk_icon_set_new, gtk_icon_set_ref, gtk_icon_set_unref, 
GTKMM_API)
   _IGNORE(gtk_icon_set_ref, gtk_icon_set_unref, gtk_icon_set_get_sizes)
 
 public:
diff --git a/gtk/src/iconsource.hg b/gtk/src/iconsource.hg
index 487ea8dd..eff1d3ce 100644
--- a/gtk/src/iconsource.hg
+++ b/gtk/src/iconsource.hg
@@ -33,9 +33,9 @@ namespace Gtk
 
 /** @deprecated Use Gtk::IconTheme instead.
  */
-class IconSource
+class GTKMM_API IconSource
 {
-  _CLASS_BOXEDTYPE(IconSource, GtkIconSource, gtk_icon_source_new, gtk_icon_source_copy, 
gtk_icon_source_free)
+  _CLASS_BOXEDTYPE(IconSource, GtkIconSource, gtk_icon_source_new, gtk_icon_source_copy, 
gtk_icon_source_free, GTKMM_API)
   _IGNORE(gtk_icon_source_copy, gtk_icon_source_free)
 public:
 
diff --git a/gtk/src/icontheme.hg b/gtk/src/icontheme.hg
index a5103cab..06c48314 100644
--- a/gtk/src/icontheme.hg
+++ b/gtk/src/icontheme.hg
@@ -29,15 +29,15 @@ _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)
 
-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 cd078f50..6325a48c 100644
--- a/gtk/src/iconview.hg
+++ b/gtk/src/iconview.hg
@@ -33,7 +33,7 @@ _PINCLUDE(gtkmm/private/container_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(IconViewDropPosition, GtkIconViewDropPosition)
+_WRAP_ENUM(IconViewDropPosition, GtkIconViewDropPosition, decl_prefix GTKMM_API)
 
 /** The IconView provides an alternative view of a list model.
  * It displays the model as a grid of icons with labels.
@@ -45,12 +45,12 @@ _WRAP_ENUM(IconViewDropPosition, GtkIconViewDropPosition)
  * @ingroup Widgets
  * @ingroup Containers
  */
-class IconView
+class GTKMM_API IconView
  : public Container,
    public CellLayout,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(IconView, GtkIconView, GTK_ICON_VIEW, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(IconView, GtkIconView, GTK_ICON_VIEW, Gtk::Container, GtkContainer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(CellLayout)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
diff --git a/gtk/src/image.hg b/gtk/src/image.hg
index 12870322..9ee746a9 100644
--- a/gtk/src/image.hg
+++ b/gtk/src/image.hg
@@ -28,7 +28,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(ImageType, GtkImageType)
+_WRAP_ENUM(ImageType, GtkImageType, decl_prefix GTKMM_API)
 
 
 /** A widget displaying an image.
@@ -50,9 +50,9 @@ _WRAP_ENUM(ImageType, GtkImageType)
  *
  * @ingroup Widgets
  */
-class Image : public Misc
+class GTKMM_API Image : public Misc
 {
-  _CLASS_GTKOBJECT(Image,GtkImage,GTK_IMAGE,Gtk::Misc,GtkMisc)
+  _CLASS_GTKOBJECT(Image,GtkImage,GTK_IMAGE,Gtk::Misc,GtkMisc,,,GTKMM_API)
   _IGNORE(gtk_image_get_stock, gtk_image_get_icon_set)
 public:
 
diff --git a/gtk/src/imagemenuitem.hg b/gtk/src/imagemenuitem.hg
index e22b532f..d53cfb82 100644
--- a/gtk/src/imagemenuitem.hg
+++ b/gtk/src/imagemenuitem.hg
@@ -42,9 +42,9 @@ namespace Gtk
  * @ingroup Menus
  * @ingroup Widgets                                                                                          
                                                      S
  */
-class ImageMenuItem : public MenuItem
+class GTKMM_API ImageMenuItem : public MenuItem
 {
-  _CLASS_GTKOBJECT(ImageMenuItem,GtkImageMenuItem,GTK_IMAGE_MENU_ITEM,Gtk::MenuItem,GtkMenuItem)
+  _CLASS_GTKOBJECT(ImageMenuItem,GtkImageMenuItem,GTK_IMAGE_MENU_ITEM,Gtk::MenuItem,GtkMenuItem,,,GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/infobar.hg b/gtk/src/infobar.hg
index 1febc54d..54e3f1cd 100644
--- a/gtk/src/infobar.hg
+++ b/gtk/src/infobar.hg
@@ -47,9 +47,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class InfoBar : public HBox //Note: The C object derives from GtkBox.
+class GTKMM_API InfoBar : public HBox //Note: The C object derives from GtkBox.
 {
-  _CLASS_GTKOBJECT(InfoBar, GtkInfoBar, GTK_INFO_BAR, Gtk::HBox, GtkHBox)
+  _CLASS_GTKOBJECT(InfoBar, GtkInfoBar, GTK_INFO_BAR, Gtk::HBox, GtkHBox, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/invisible.hg b/gtk/src/invisible.hg
index afdfd721..40363dc0 100644
--- a/gtk/src/invisible.hg
+++ b/gtk/src/invisible.hg
@@ -28,9 +28,9 @@ namespace Gtk
  * It is used for reliable pointer grabs and selection handling in the code for drag-and-drop.
  * @ingroup Widgets
  */
-class Invisible : public Widget
+class GTKMM_API Invisible : public Widget
 {
-  _CLASS_GTKOBJECT(Invisible, GtkInvisible, GTK_INVISIBLE, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Invisible, GtkInvisible, GTK_INVISIBLE, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
   _WRAP_CTOR(Invisible(const Glib::RefPtr<Gdk::Screen>& screen), gtk_invisible_new_for_screen)
diff --git a/gtk/src/label.hg b/gtk/src/label.hg
index 19c7a257..bb8cf9e0 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 Misc
+class GTKMM_API Label : public Misc
 {
-  _CLASS_GTKOBJECT(Label, GtkLabel, GTK_LABEL, Gtk::Misc,GtkMisc)
+  _CLASS_GTKOBJECT(Label, GtkLabel, GTK_LABEL, Gtk::Misc,GtkMisc,,,GTKMM_API)
 public:
   Label();
   explicit Label(const Glib::ustring& label, bool mnemonic = false);
diff --git a/gtk/src/layout.hg b/gtk/src/layout.hg
index d1542064..cf8835e7 100644
--- a/gtk/src/layout.hg
+++ b/gtk/src/layout.hg
@@ -39,11 +39,11 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Layout
+class GTKMM_API Layout
  : public Container,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(Layout,GtkLayout,GTK_LAYOUT,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Layout,GtkLayout,GTK_LAYOUT,Gtk::Container,GtkContainer,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/levelbar.hg b/gtk/src/levelbar.hg
index d1b1f2b2..32f48224 100644
--- a/gtk/src/levelbar.hg
+++ b/gtk/src/levelbar.hg
@@ -23,7 +23,7 @@ _PINCLUDE(gtkmm/private/widget_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(LevelBarMode, GtkLevelBarMode)
+_WRAP_ENUM(LevelBarMode, GtkLevelBarMode, decl_prefix GTKMM_API)
 
 //TODO: Derive/Implement from Gtk::Orientable (and remove our mention of that
 //in the class documentation when we can break ABI.
@@ -55,9 +55,9 @@ _WRAP_ENUM(LevelBarMode, GtkLevelBarMode)
  * @ingroup Widgets
  * @newin{3,6}
  */
-class LevelBar : public Widget
+class GTKMM_API LevelBar : public Widget
 {
-  _CLASS_GTKOBJECT(LevelBar, GtkLevelBar, GTK_LEVEL_BAR, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(LevelBar, GtkLevelBar, GTK_LEVEL_BAR, Gtk::Widget, GtkWidget, , , GTKMM_API)
 public:
 
   _CTOR_DEFAULT()
diff --git a/gtk/src/linkbutton.hg b/gtk/src/linkbutton.hg
index 8d9f6b2b..7ef46532 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 9652bb9c..4cec2d8a 100644
--- a/gtk/src/listbox.hg
+++ b/gtk/src/listbox.hg
@@ -27,7 +27,7 @@ _PINCLUDE(gtkmm/private/container_p.h)
 
 namespace Gtk
 {
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /** A ListBox is a vertical container that contains ListBoxRow
  * children. These rows can by dynamically sorted and filtered, and
@@ -54,9 +54,9 @@ class Adjustment;
  *
  * @newin{3,10}
  */
-class ListBox : public Container
+class GTKMM_API ListBox : public Container
 {
-  _CLASS_GTKOBJECT(ListBox, GtkListBox, GTK_LIST_BOX, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(ListBox, GtkListBox, GTK_LIST_BOX, Gtk::Container, GtkContainer, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/listboxrow.hg b/gtk/src/listboxrow.hg
index f25a19f6..034b72f3 100644
--- a/gtk/src/listboxrow.hg
+++ b/gtk/src/listboxrow.hg
@@ -29,9 +29,9 @@ namespace Gtk
  *
  * @newin{3,10}
  */
-class ListBoxRow : public Bin
+class GTKMM_API ListBoxRow : public Bin
 {
-  _CLASS_GTKOBJECT(ListBoxRow, GtkListBoxRow, GTK_LIST_BOX_ROW, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(ListBoxRow, GtkListBoxRow, GTK_LIST_BOX_ROW, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/liststore.hg b/gtk/src/liststore.hg
index 3790fef3..f2825cf9 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 5622887b..e9b15295 100644
--- a/gtk/src/main.hg
+++ b/gtk/src/main.hg
@@ -17,6 +17,8 @@
  */
 
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <gtk/gtk.h>
 
 #include <sigc++/sigc++.h>
@@ -35,8 +37,8 @@ namespace Gtk
 
 _DEPRECATE_IFDEF_START
 
-class Widget;
-class Window;
+class GTKMM_API Widget;
+class GTKMM_API Window;
 
 //**********************************************************************
 
@@ -45,7 +47,7 @@ class Window;
 
 
 /// KeySnooper Signal Class (internal)
-class KeySnooperSig
+class GTKMM_API KeySnooperSig
 {
 public:
   typedef sigc::slot<int, Widget*, GdkEventKey*> SlotType;
@@ -87,7 +89,7 @@ _DEPRECATE_IFDEF_END
  *
  * @deprecated Use Gtk::Application instead.
  */
-class Main : public sigc::trackable
+class GTKMM_API Main : public sigc::trackable
 {
 public:
 
diff --git a/gtk/src/menu.hg b/gtk/src/menu.hg
index d7cb668e..f2f23f2a 100644
--- a/gtk/src/menu.hg
+++ b/gtk/src/menu.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/menushell_p.h)
 namespace Gtk
 {
 
-class AccelGroup;
+class GTKMM_API AccelGroup;
 
 /** @defgroup Menus Menu classes
  */
@@ -37,9 +37,9 @@ class AccelGroup;
  * @ingroup Widgets
  * @ingroup Menus
  */
-class Menu : public MenuShell
+class GTKMM_API Menu : public MenuShell
 {
-  _CLASS_GTKOBJECT(Menu,GtkMenu,GTK_MENU,Gtk::MenuShell,GtkMenuShell)
+  _CLASS_GTKOBJECT(Menu,GtkMenu,GTK_MENU,Gtk::MenuShell,GtkMenuShell,,,GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/menubar.hg b/gtk/src/menubar.hg
index 45e79e6d..0c77b9e6 100644
--- a/gtk/src/menubar.hg
+++ b/gtk/src/menubar.hg
@@ -25,7 +25,7 @@ _PINCLUDE(gtkmm/private/menushell_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(PackDirection, GtkPackDirection)
+_WRAP_ENUM(PackDirection, GtkPackDirection, decl_prefix GTKMM_API)
 
 /** A standard menu bar which usually holds Gtk::Menu submenu items.
  * The useful methods are in the base class - Gtk::MenuShell.
@@ -36,9 +36,9 @@ _WRAP_ENUM(PackDirection, GtkPackDirection)
  * @ingroup Widgets
  * @ingroup Menus
  */
-class MenuBar : public MenuShell
+class GTKMM_API MenuBar : public MenuShell
 {
-  _CLASS_GTKOBJECT(MenuBar,GtkMenuBar,GTK_MENU_BAR,Gtk::MenuShell,GtkMenuShell)
+  _CLASS_GTKOBJECT(MenuBar,GtkMenuBar,GTK_MENU_BAR,Gtk::MenuShell,GtkMenuShell,,,GTKMM_API)
 
 public:
   MenuBar();
diff --git a/gtk/src/menubutton.hg b/gtk/src/menubutton.hg
index 6b60342a..aa516ae0 100644
--- a/gtk/src/menubutton.hg
+++ b/gtk/src/menubutton.hg
@@ -36,9 +36,9 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,6}
  */
-class MenuButton : public ToggleButton
+class GTKMM_API MenuButton : public ToggleButton
 {
-  _CLASS_GTKOBJECT(MenuButton, GtkMenuButton, GTK_MENU_BUTTON, Gtk::ToggleButton, GtkToggleButton)
+  _CLASS_GTKOBJECT(MenuButton, GtkMenuButton, GTK_MENU_BUTTON, Gtk::ToggleButton, GtkToggleButton, , , 
GTKMM_API)
 public:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/menuitem.hg b/gtk/src/menuitem.hg
index 2390404c..3b35c998 100644
--- a/gtk/src/menuitem.hg
+++ b/gtk/src/menuitem.hg
@@ -30,8 +30,8 @@ namespace Gtk
 
 //TODO: Derive from (and implement) Actionable when we can break ABI.
 
-class Menu;
-namespace Menu_Helpers { class Element; }
+class GTKMM_API Menu;
+namespace Menu_Helpers { class GTKMM_API Element; }
 
 /** Child item for menus.
  * Handle highlighting, alignment, events and submenus.
@@ -39,11 +39,11 @@ namespace Menu_Helpers { class Element; }
  * @ingroup Widgets
  * @ingroup Menus
  */
-class MenuItem
+class GTKMM_API MenuItem
  : public Bin,
    public Activatable
 {
-  _CLASS_GTKOBJECT(MenuItem,GtkMenuItem,GTK_MENU_ITEM,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(MenuItem,GtkMenuItem,GTK_MENU_ITEM,Gtk::Bin,GtkBin,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Activatable)
 public:
   /// Create an empty menu item
diff --git a/gtk/src/menushell.hg b/gtk/src/menushell.hg
index 188269da..4c9f622f 100644
--- a/gtk/src/menushell.hg
+++ b/gtk/src/menushell.hg
@@ -29,8 +29,8 @@ _PINCLUDE(gtkmm/window.h)
 namespace Gtk
 {
 
-class Menu;
-class Window;
+class GTKMM_API Menu;
+class GTKMM_API Window;
 
 
 /** The abstract base class for Gtk::Menu and Gtk::MenuBar.
@@ -41,9 +41,9 @@ class Window;
  * @ingroup Containers
  * @ingroup Menus
  */
-class MenuShell : public Container
+class GTKMM_API MenuShell : public Container
 {
-  _CLASS_GTKOBJECT(MenuShell,GtkMenuShell,GTK_MENU_SHELL,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(MenuShell,GtkMenuShell,GTK_MENU_SHELL,Gtk::Container,GtkContainer,,,GTKMM_API)
 
 public:
   _CUSTOM_DTOR()
diff --git a/gtk/src/menutoolbutton.hg b/gtk/src/menutoolbutton.hg
index f00e7918..a02f50a3 100644
--- a/gtk/src/menutoolbutton.hg
+++ b/gtk/src/menutoolbutton.hg
@@ -32,9 +32,9 @@ namespace Gtk
  * A MenuToolButton is a Gtk::ToolItem that contains a menu.
  * @ingroup Widgets
  */
-class MenuToolButton : public ToolButton
+class GTKMM_API MenuToolButton : public ToolButton
 {
-  _CLASS_GTKOBJECT(MenuToolButton, GtkMenuToolButton, GTK_MENU_TOOL_BUTTON, Gtk::ToolButton, GtkToolButton)
+  _CLASS_GTKOBJECT(MenuToolButton, GtkMenuToolButton, GTK_MENU_TOOL_BUTTON, Gtk::ToolButton, GtkToolButton, 
, , GTKMM_API)
 
 public:
   /** Creates a new MenuToolButton.
diff --git a/gtk/src/messagedialog.hg b/gtk/src/messagedialog.hg
index a748e977..e5e5b7ec 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 = 
MESSAGE_INFO, ButtonsType buttons = BUTTONS_OK, bool modal = false);
diff --git a/gtk/src/misc.hg b/gtk/src/misc.hg
index b444ddec..52f380d1 100644
--- a/gtk/src/misc.hg
+++ b/gtk/src/misc.hg
@@ -45,9 +45,9 @@ namespace Gtk
  * Gtk::Widget::property_margin() properties on the child widget.
  * Gtk::Misc should not be used in new code.
  */
-class Misc : public Widget
+class GTKMM_API Misc : public Widget
 {
-  _CLASS_GTKOBJECT(Misc,GtkMisc,GTK_MISC,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Misc,GtkMisc,GTK_MISC,Gtk::Widget,GtkWidget,,,GTKMM_API)
 protected:
   _CTOR_DEFAULT
 public:
diff --git a/gtk/src/modelbutton.hg b/gtk/src/modelbutton.hg
index e6a2a879..a22ee44a 100644
--- a/gtk/src/modelbutton.hg
+++ b/gtk/src/modelbutton.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/button_p.h)
 
 namespace Gtk
 {
-_WRAP_ENUM(ButtonRole, GtkButtonRole)
+_WRAP_ENUM(ButtonRole, GtkButtonRole, decl_prefix GTKMM_API)
 
 /** A button that uses a Gio::Action as model.
  *
@@ -56,9 +56,9 @@ _WRAP_ENUM(ButtonRole, GtkButtonRole)
  *
  * @ingroup Widgets
  */
-class ModelButton : public Button
+class GTKMM_API ModelButton : public Button
 {
-  _CLASS_GTKOBJECT(ModelButton, GtkModelButton, GTK_MODEL_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(ModelButton, GtkModelButton, GTK_MODEL_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/nativedialog.hg b/gtk/src/nativedialog.hg
index 20b86a99..cf409568 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.
  *
@@ -43,9 +45,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/notebook.hg b/gtk/src/notebook.hg
index c56d8f0e..f3098b1d 100644
--- a/gtk/src/notebook.hg
+++ b/gtk/src/notebook.hg
@@ -29,7 +29,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(NotebookTab, GtkNotebookTab)
+_WRAP_ENUM(NotebookTab, GtkNotebookTab, decl_prefix GTKMM_API)
 
 /** Container which shows one of its children at a time, in tabbed windows.
  *
@@ -42,9 +42,9 @@ _WRAP_ENUM(NotebookTab, GtkNotebookTab)
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Notebook : public Container
+class GTKMM_API Notebook : public Container
 {
-  _CLASS_GTKOBJECT(Notebook,GtkNotebook,GTK_NOTEBOOK,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Notebook,GtkNotebook,GTK_NOTEBOOK,Gtk::Container,GtkContainer,,,GTKMM_API)
 
 public:
 
diff --git a/gtk/src/numerableicon.hg b/gtk/src/numerableicon.hg
index 5e6e0831..76ccfc2c 100644
--- a/gtk/src/numerableicon.hg
+++ b/gtk/src/numerableicon.hg
@@ -43,9 +43,9 @@ namespace Gtk
  * @newin{3,0}
  * @deprecated No replacement available.
  */
-class NumerableIcon : public Gio::EmblemedIcon
+class GTKMM_API NumerableIcon : public Gio::EmblemedIcon
 {
-  _CLASS_GOBJECT(NumerableIcon, GtkNumerableIcon, GTK_NUMERABLE_ICON, Gio::EmblemedIcon, GEmblemedIcon)
+  _CLASS_GOBJECT(NumerableIcon, GtkNumerableIcon, GTK_NUMERABLE_ICON, Gio::EmblemedIcon, GEmblemedIcon, , , 
GTKMM_API)
 
 protected:
   _WRAP_CTOR(NumerableIcon(const Glib::RefPtr<Gio::Icon>& icon), gtk_numerable_icon_new)
diff --git a/gtk/src/offscreenwindow.hg b/gtk/src/offscreenwindow.hg
index 7b5daa9c..50d36ec1 100644
--- a/gtk/src/offscreenwindow.hg
+++ b/gtk/src/offscreenwindow.hg
@@ -51,9 +51,9 @@ namespace Gtk
  * @ingroup Containers
  * @ingroup Widgets
  */
-class OffscreenWindow : public Window
+class GTKMM_API OffscreenWindow : public Window
 {
-  _CLASS_GTKOBJECT(OffscreenWindow, GtkOffscreenWindow, GTK_OFFSCREEN_WINDOW, Gtk::Window, GtkWindow)
+  _CLASS_GTKOBJECT(OffscreenWindow, GtkOffscreenWindow, GTK_OFFSCREEN_WINDOW, Gtk::Window, GtkWindow, , , 
GTKMM_API)
   _UNMANAGEABLE
 public:
   _CTOR_DEFAULT()
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 e0c19585..b27dc372 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 Bin
 {
-  _CLASS_GTKOBJECT(Overlay, GtkOverlay, GTK_OVERLAY, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(Overlay, GtkOverlay, GTK_OVERLAY, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Creates a new Overlay.
diff --git a/gtk/src/pagesetup.hg b/gtk/src/pagesetup.hg
index 3da6d225..d62f0506 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 3cf1d552..a57e8471 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 Container,
    public Orientable
 {
-  _CLASS_GTKOBJECT(Paned,GtkPaned,GTK_PANED,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Paned,GtkPaned,GTK_PANED,Gtk::Container,GtkContainer,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/papersize.hg b/gtk/src/papersize.hg
index 01e9947d..103713e1 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>
@@ -29,15 +31,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
@@ -50,10 +52,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/placessidebar.hg b/gtk/src/placessidebar.hg
index e9291e20..f2a26a25 100644
--- a/gtk/src/placessidebar.hg
+++ b/gtk/src/placessidebar.hg
@@ -28,7 +28,7 @@ _PINCLUDE(gtkmm/private/scrolledwindow_p.h)
 
 namespace Gio
 {
-class MountOperation;
+class GTKMM_API MountOperation;
 }
 
 namespace Gtk
@@ -63,10 +63,10 @@ namespace Gtk
  * @newin{3,10}
  */
 
-class PlacesSidebar
+class GTKMM_API PlacesSidebar
   : public ScrolledWindow
 {
-  _CLASS_GTKOBJECT(PlacesSidebar, GtkPlacesSidebar, GTK_PLACES_SIDEBAR, Gtk::ScrolledWindow, 
GtkScrolledWindow)
+  _CLASS_GTKOBJECT(PlacesSidebar, GtkPlacesSidebar, GTK_PLACES_SIDEBAR, Gtk::ScrolledWindow, 
GtkScrolledWindow, , , GTKMM_API)
 public:
 
   /** Creates a new Gtk::PlacesSidebar widget.
diff --git a/gtk/src/plug.hg b/gtk/src/plug.hg
index 0c1b2486..c849323b 100644
--- a/gtk/src/plug.hg
+++ b/gtk/src/plug.hg
@@ -52,9 +52,9 @@ namespace Gtk
  * are compiled for the X11 platform and %GDK_WINDOWING_X11 is defined.
  * They can only be used on a GdkX11Display.
  */
-class Plug : public Window
+class GTKMM_API Plug : public Window
 {
-  _CLASS_GTKOBJECT(Plug, GtkPlug, GTK_PLUG, Gtk::Window, GtkWindow)
+  _CLASS_GTKOBJECT(Plug, GtkPlug, GTK_PLUG, Gtk::Window, GtkWindow, , , GTKMM_API)
   _UNMANAGEABLE
   _IGNORE(gtk_plug_construct, gtk_plug_construct_for_display)
 public:
diff --git a/gtk/src/popover.hg b/gtk/src/popover.hg
index 61623284..dba48bfe 100644
--- a/gtk/src/popover.hg
+++ b/gtk/src/popover.hg
@@ -24,7 +24,7 @@ _PINCLUDE(gtkmm/private/bin_p.h)
 
 namespace Gtk
 {
-_WRAP_ENUM(PopoverConstraint, GtkPopoverConstraint)
+_WRAP_ENUM(PopoverConstraint, GtkPopoverConstraint, decl_prefix GTKMM_API)
 
 /** Context dependent bubbles.
  *
@@ -48,10 +48,10 @@ _WRAP_ENUM(PopoverConstraint, GtkPopoverConstraint)
  * @ingroup Widgets
  * @newin{3,12}
  */
-class Popover
+class GTKMM_API Popover
   : public Bin
 {
-  _CLASS_GTKOBJECT(Popover, GtkPopover, GTK_POPOVER, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(Popover, GtkPopover, GTK_POPOVER, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Creates a new popover to point to @a relative_to
diff --git a/gtk/src/popovermenu.hg b/gtk/src/popovermenu.hg
index aab0e9df..df467708 100644
--- a/gtk/src/popovermenu.hg
+++ b/gtk/src/popovermenu.hg
@@ -48,9 +48,9 @@ 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:
   _CTOR_DEFAULT
diff --git a/gtk/src/printcontext.hg b/gtk/src/printcontext.hg
index d910f6fb..c51eecff 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 89f9d7c7..cc5689d9 100644
--- a/gtk/src/printer.hg
+++ b/gtk/src/printer.hg
@@ -38,9 +38,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:
@@ -130,6 +130,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 c1789387..4048de92 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 288b60a2..cb01ac3f 100644
--- a/gtk/src/printoperation.hg
+++ b/gtk/src/printoperation.hg
@@ -30,10 +30,10 @@ _PINCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(PrintStatus, GtkPrintStatus)
-_WRAP_ENUM(PrintOperationResult, GtkPrintOperationResult)
-_WRAP_ENUM(PrintOperationAction, GtkPrintOperationAction)
-_WRAP_GERROR(PrintError, GtkPrintError, GTK_PRINT_ERROR)
+_WRAP_ENUM(PrintStatus, GtkPrintStatus, decl_prefix GTKMM_API)
+_WRAP_ENUM(PrintOperationResult, GtkPrintOperationResult, decl_prefix GTKMM_API)
+_WRAP_ENUM(PrintOperationAction, GtkPrintOperationAction, decl_prefix GTKMM_API)
+_WRAP_GERROR(PrintError, GtkPrintError, GTK_PRINT_ERROR, decl_prefix GTKMM_API)
 
 /** @defgroup Printing Printing
  */
@@ -56,11 +56,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:
@@ -196,6 +196,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);
@@ -213,6 +214,7 @@ public:
    *
    * @since 2.22
    */
+  GTKMM_API
   Glib::RefPtr<PageSetup> run_page_setup_dialog(Window& parent,
                                                 const Glib::RefPtr<const PrintSettings>& print_settings);
 
@@ -235,6 +237,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,
@@ -253,6 +256,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 89635a75..dcf33937 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 61f5976b..adb875b3 100644
--- a/gtk/src/printsettings.hg
+++ b/gtk/src/printsettings.hg
@@ -27,11 +27,11 @@ _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 PrintSettings object represents the settings of a print dialog in a system-independent way.
  * The main use for this object is that once you've printed you can get a settings object that
@@ -46,9 +46,9 @@ _WRAP_ENUM(NumberUpLayout, GtkNumberUpLayout)
  *
  * @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..6f3e001d 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/radioaction.hg b/gtk/src/radioaction.hg
index 98b58459..ab3aca3d 100644
--- a/gtk/src/radioaction.hg
+++ b/gtk/src/radioaction.hg
@@ -31,7 +31,7 @@ _IS_DEPRECATED // This whole file is deprecated.
 namespace Gtk
 {
 
-class StockID; //Deprecated.
+class GTKMM_API StockID; //Deprecated.
 
 /** A deprecated action of which only one in a group can be active.
  *
@@ -44,9 +44,9 @@ class StockID; //Deprecated.
  * Gtk::Menu(const Glib::RefPtr<Gio::MenuModel>& model).
  * See the Gtk::Action base class for more information about the deprecation.
  */
-class RadioAction : public Gtk::ToggleAction
+class GTKMM_API RadioAction : public Gtk::ToggleAction
 {
-  _CLASS_GOBJECT(RadioAction, GtkRadioAction, GTK_RADIO_ACTION, Gtk::ToggleAction, GtkToggleAction)
+  _CLASS_GOBJECT(RadioAction, GtkRadioAction, GTK_RADIO_ACTION, Gtk::ToggleAction, GtkToggleAction, , , 
GTKMM_API)
 public:
   typedef RadioButtonGroup Group;
 
diff --git a/gtk/src/radiobutton.hg b/gtk/src/radiobutton.hg
index e33f1a1f..688f62bc 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/radiomenuitem.hg b/gtk/src/radiomenuitem.hg
index bcda32c8..e96fc1dd 100644
--- a/gtk/src/radiomenuitem.hg
+++ b/gtk/src/radiomenuitem.hg
@@ -24,16 +24,16 @@ _PINCLUDE(gtkmm/private/checkmenuitem_p.h)
 namespace Gtk
 {
 
-class RadioMenuItem;
+class GTKMM_API RadioMenuItem;
 
 /** A CheckMenuItem that belongs to a group.
  * At each instant exactly one of the menu items from a group is selected.
  * @ingroup Menus
  * @ingroup Widgets
  */
-class RadioMenuItem : public CheckMenuItem
+class GTKMM_API RadioMenuItem : public CheckMenuItem
 {
-  _CLASS_GTKOBJECT(RadioMenuItem, GtkRadioMenuItem, GTK_RADIO_MENU_ITEM, Gtk::CheckMenuItem, 
GtkCheckMenuItem)
+  _CLASS_GTKOBJECT(RadioMenuItem, GtkRadioMenuItem, GTK_RADIO_MENU_ITEM, Gtk::CheckMenuItem, 
GtkCheckMenuItem, , , GTKMM_API)
 public:
   using Group = RadioButtonGroup;
 
diff --git a/gtk/src/radiotoolbutton.hg b/gtk/src/radiotoolbutton.hg
index dd159fea..4e42fe9d 100644
--- a/gtk/src/radiotoolbutton.hg
+++ b/gtk/src/radiotoolbutton.hg
@@ -33,9 +33,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class RadioToolButton : public ToggleToolButton
+class GTKMM_API RadioToolButton : public ToggleToolButton
 {
-  _CLASS_GTKOBJECT(RadioToolButton, GtkRadioToolButton, GTK_RADIO_TOOL_BUTTON, Gtk::ToggleToolButton, 
GtkToggleToolButton)
+  _CLASS_GTKOBJECT(RadioToolButton, GtkRadioToolButton, GTK_RADIO_TOOL_BUTTON, Gtk::ToggleToolButton, 
GtkToggleToolButton, , , GTKMM_API)
 public:
   using Group = RadioButtonGroup;
 
diff --git a/gtk/src/range.hg b/gtk/src/range.hg
index 12f4572f..015c6e8b 100644
--- a/gtk/src/range.hg
+++ b/gtk/src/range.hg
@@ -25,15 +25,15 @@ _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 : public Widget
+class GTKMM_API Range : public Widget
 {
-  _CLASS_GTKOBJECT(Range,GtkRange,GTK_RANGE,Gtk::Widget,GtkWidget)
+  _CLASS_GTKOBJECT(Range,GtkRange,GTK_RANGE,Gtk::Widget,GtkWidget,,,GTKMM_API)
 protected:
   _CTOR_DEFAULT
 public:
diff --git a/gtk/src/recentaction.hg b/gtk/src/recentaction.hg
index 61c5d69c..f52b40e4 100644
--- a/gtk/src/recentaction.hg
+++ b/gtk/src/recentaction.hg
@@ -32,7 +32,7 @@ _IS_DEPRECATED // This whole file is deprecated.
 namespace Gtk
 {
 
-class StockID; //Deprecated.
+class GTKMM_API StockID; //Deprecated.
 
 /** A deprecated action of which represents a list of recently used files.
  *
@@ -53,11 +53,11 @@ class StockID; //Deprecated.
  *
  * @ingroup RecentFiles
  */
-class RecentAction
+class GTKMM_API RecentAction
   : public Gtk::Action,
     public Gtk::RecentChooser
 {
-  _CLASS_GOBJECT(RecentAction, GtkRecentAction, GTK_RECENT_ACTION, Gtk::Action, GtkAction)
+  _CLASS_GOBJECT(RecentAction, GtkRecentAction, GTK_RECENT_ACTION, Gtk::Action, GtkAction, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(RecentChooser)
 
 protected:
diff --git a/gtk/src/recentchooser.hg b/gtk/src/recentchooser.hg
index d9a328e6..eaf7910f 100644
--- a/gtk/src/recentchooser.hg
+++ b/gtk/src/recentchooser.hg
@@ -35,11 +35,11 @@ typedef struct _GtkRecentChooserIface GtkRecentChooserIface;
 namespace Gtk
 {
 
-_WRAP_ENUM(RecentSortType, GtkRecentSortType)
+_WRAP_ENUM(RecentSortType, GtkRecentSortType, decl_prefix GTKMM_API)
 
 /** Exception class for Gtk::RecentChooser errors.
  */
-_WRAP_GERROR(RecentChooserError,GtkRecentChooserError,GTK_RECENT_CHOOSER_ERROR)
+_WRAP_GERROR(RecentChooserError,GtkRecentChooserError,GTK_RECENT_CHOOSER_ERROR,decl_prefix GTKMM_API)
 
 /** RecentChooser is an interface that can be implemented by widgets
  * displaying the list of recently used files.  In GTK+, the main objects
@@ -50,9 +50,9 @@ _WRAP_GERROR(RecentChooserError,GtkRecentChooserError,GTK_RECENT_CHOOSER_ERROR)
  *
  * @ingroup RecentFiles
  */
-class RecentChooser : public Glib::Interface
+class GTKMM_API RecentChooser : public Glib::Interface
 {
-  _CLASS_INTERFACE(RecentChooser, GtkRecentChooser, GTK_RECENT_CHOOSER, GtkRecentChooserIface)
+  _CLASS_INTERFACE(RecentChooser, GtkRecentChooser, GTK_RECENT_CHOOSER, GtkRecentChooserIface, , , GTKMM_API)
 public:
 
   _WRAP_METHOD(void set_show_private(bool show_private = true), gtk_recent_chooser_set_show_private)
diff --git a/gtk/src/recentchooserdialog.hg b/gtk/src/recentchooserdialog.hg
index b14c8682..26003349 100644
--- a/gtk/src/recentchooserdialog.hg
+++ b/gtk/src/recentchooserdialog.hg
@@ -41,11 +41,11 @@ namespace Gtk
  *
  * @ingroup RecentFiles
  */
-class RecentChooserDialog
+class GTKMM_API RecentChooserDialog
   : public Dialog,
     public RecentChooser
 {
-  _CLASS_GTKOBJECT(RecentChooserDialog, GtkRecentChooserDialog, GTK_RECENT_CHOOSER_DIALOG, Gtk::Dialog, 
GtkDialog)
+  _CLASS_GTKOBJECT(RecentChooserDialog, GtkRecentChooserDialog, GTK_RECENT_CHOOSER_DIALOG, Gtk::Dialog, 
GtkDialog, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(RecentChooser)
   _UNMANAGEABLE
 public:
diff --git a/gtk/src/recentchoosermenu.hg b/gtk/src/recentchoosermenu.hg
index 67c2dec8..b90c84c3 100644
--- a/gtk/src/recentchoosermenu.hg
+++ b/gtk/src/recentchoosermenu.hg
@@ -37,12 +37,12 @@ namespace Gtk
  *
  * @ingroup RecentFiles
  */
-class RecentChooserMenu
+class GTKMM_API RecentChooserMenu
   : public Menu,
     public RecentChooser,
     public Activatable
 {
-  _CLASS_GTKOBJECT(RecentChooserMenu, GtkRecentChooserMenu, GTK_RECENT_CHOOSER_MENU, Gtk::Menu, GtkMenu)
+  _CLASS_GTKOBJECT(RecentChooserMenu, GtkRecentChooserMenu, GTK_RECENT_CHOOSER_MENU, Gtk::Menu, GtkMenu, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(RecentChooser)
   _IMPLEMENTS_INTERFACE(Activatable)
 public:
diff --git a/gtk/src/recentchooserwidget.hg b/gtk/src/recentchooserwidget.hg
index e13b2ae5..3f18246d 100644
--- a/gtk/src/recentchooserwidget.hg
+++ b/gtk/src/recentchooserwidget.hg
@@ -36,11 +36,11 @@ namespace Gtk
  *
  * @ingroup RecentFiles
  */
-class RecentChooserWidget
+class GTKMM_API RecentChooserWidget
 : public VBox,
   public RecentChooser
 {
-  _CLASS_GTKOBJECT(RecentChooserWidget, GtkRecentChooserWidget, GTK_RECENT_CHOOSER_WIDGET, Gtk::VBox, 
GtkVBox)
+  _CLASS_GTKOBJECT(RecentChooserWidget, GtkRecentChooserWidget, GTK_RECENT_CHOOSER_WIDGET, Gtk::VBox, 
GtkVBox, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(RecentChooser)
 public:
   _CTOR_DEFAULT;
diff --git a/gtk/src/recentfilter.hg b/gtk/src/recentfilter.hg
index a741e390..c2e597fc 100644
--- a/gtk/src/recentfilter.hg
+++ b/gtk/src/recentfilter.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)
@@ -23,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(RecentFilterFlags, GtkRecentFilterFlags)
+_WRAP_ENUM(RecentFilterFlags, GtkRecentFilterFlags, decl_prefix GTKMM_API)
 
 
 /** RecentFilter can be used to restrict the files being shown
@@ -46,9 +48,9 @@ _WRAP_ENUM(RecentFilterFlags, GtkRecentFilterFlags)
  *
  * @ingroup RecentFiles
  */
-class RecentFilter : public Glib::Object
+class GTKMM_API RecentFilter : public Glib::Object
 {
-  _CLASS_GOBJECT(RecentFilter, GtkRecentFilter, GTK_RECENT_FILTER, Glib::Object, GObject)
+  _CLASS_GOBJECT(RecentFilter, GtkRecentFilter, GTK_RECENT_FILTER, Glib::Object, GObject, , , GTKMM_API)
   _DERIVES_INITIALLY_UNOWNED()
 protected:
   _CTOR_DEFAULT
diff --git a/gtk/src/recentinfo.hg b/gtk/src/recentinfo.hg
index 19cbfdf5..a6a32b4c 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 <gdkmm/pixbuf.h>
@@ -42,9 +44,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:
 
@@ -102,7 +104,7 @@ _CONVERSION(`const RecentInfo&',`GtkRecentInfo*', `const_cast<GtkRecentInfo*>(($
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-struct RecentInfoTraits
+struct GTKMM_API RecentInfoTraits
 {
   typedef Glib::RefPtr<RecentInfo> CppType;
   typedef const GtkRecentInfo* CType;
@@ -134,7 +136,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 e16e7fd8..cb015297 100644
--- a/gtk/src/recentmanager.hg
+++ b/gtk/src/recentmanager.hg
@@ -34,7 +34,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
  */
@@ -61,9 +61,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/revealer.hg b/gtk/src/revealer.hg
index 23ec570e..844016a9 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 Bin
 {
-  _CLASS_GTKOBJECT(Revealer, GtkRevealer, GTK_REVEALER, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(Revealer, GtkRevealer, GTK_REVEALER, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Create Gtk::Revealer widget.
diff --git a/gtk/src/scale.hg b/gtk/src/scale.hg
index d5e0fb8d..31c2f34f 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 ac729450..1ac48189 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 Button,
    public Orientable
 {
-  _CLASS_GTKOBJECT(ScaleButton, GtkScaleButton, GTK_SCALE_BUTTON, Gtk::Button, GtkButton)
+  _CLASS_GTKOBJECT(ScaleButton, GtkScaleButton, GTK_SCALE_BUTTON, Gtk::Button, GtkButton, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 
 public:
diff --git a/gtk/src/scrollable.hg b/gtk/src/scrollable.hg
index cca1dc73..ce0f6438 100644
--- a/gtk/src/scrollable.hg
+++ b/gtk/src/scrollable.hg
@@ -32,16 +32,16 @@ typedef struct _GtkScrollableInterface GtkScrollableInterface;
 namespace Gtk
 {
 
-_WRAP_ENUM(ScrollablePolicy, GtkScrollablePolicy)
+_WRAP_ENUM(ScrollablePolicy, GtkScrollablePolicy, decl_prefix GTKMM_API)
 
 /** This interface is implemented by widgets with native
  * scrolling ability.
  *
  * @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_METHOD(Glib::RefPtr<Adjustment> get_hadjustment(), gtk_scrollable_get_hadjustment, refreturn)
diff --git a/gtk/src/scrollbar.hg b/gtk/src/scrollbar.hg
index 1b6789b8..96043399 100644
--- a/gtk/src/scrollbar.hg
+++ b/gtk/src/scrollbar.hg
@@ -41,11 +41,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Scrollbar
+class GTKMM_API Scrollbar
  : public Range,
    public Orientable
 {
-  _CLASS_GTKOBJECT(Scrollbar,GtkScrollbar,GTK_SCROLLBAR,Gtk::Range,GtkRange)
+  _CLASS_GTKOBJECT(Scrollbar,GtkScrollbar,GTK_SCROLLBAR,Gtk::Range,GtkRange,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/scrolledwindow.hg b/gtk/src/scrolledwindow.hg
index 6c467812..73e5b6a0 100644
--- a/gtk/src/scrolledwindow.hg
+++ b/gtk/src/scrolledwindow.hg
@@ -23,8 +23,8 @@ _PINCLUDE(gtkmm/private/bin_p.h)
 namespace Gtk
 {
 
-class Adjustment;
-class Scrollbar;
+class GTKMM_API Adjustment;
+class GTKMM_API Scrollbar;
 
 /** Adds scrollbars to its child widget.
  *
@@ -45,9 +45,9 @@ class Scrollbar;
  * @ingroup Widgets
  * @ingroup Containers
  */
-class ScrolledWindow : public Bin
+class GTKMM_API ScrolledWindow : public Bin
 {
-  _CLASS_GTKOBJECT(ScrolledWindow,GtkScrolledWindow,GTK_SCROLLED_WINDOW,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(ScrolledWindow,GtkScrolledWindow,GTK_SCROLLED_WINDOW,Gtk::Bin,GtkBin,,,GTKMM_API)
 
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/searchbar.hg b/gtk/src/searchbar.hg
index 1e611b91..b4ba2f34 100644
--- a/gtk/src/searchbar.hg
+++ b/gtk/src/searchbar.hg
@@ -43,10 +43,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,10}
  */
-class SearchBar
+class GTKMM_API SearchBar
   : public Bin
 {
-  _CLASS_GTKOBJECT(SearchBar, GtkSearchBar, GTK_SEARCH_BAR, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(SearchBar, GtkSearchBar, GTK_SEARCH_BAR, Gtk::Bin, GtkBin, , , GTKMM_API)
 public:
 
   /** Creates a Gtk::SearchBar.
diff --git a/gtk/src/searchentry.hg b/gtk/src/searchentry.hg
index eaa05f2a..1dc7918a 100644
--- a/gtk/src/searchentry.hg
+++ b/gtk/src/searchentry.hg
@@ -52,10 +52,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/selectiondata.hg b/gtk/src/selectiondata.hg
index c1832fd2..b8d5380d 100644
--- a/gtk/src/selectiondata.hg
+++ b/gtk/src/selectiondata.hg
@@ -15,6 +15,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 _DEFS(gtkmm,gtk)
 
 #include <vector>
@@ -26,12 +28,12 @@ namespace Gtk
 {
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
-class TextBuffer;
+class GTKMM_API TextBuffer;
 #endif //DOXYGEN_SHOULD_SKIP_THIS
 
-class SelectionData
+class GTKMM_API SelectionData
 {
-  _CLASS_BOXEDTYPE(SelectionData, GtkSelectionData, NONE, gtk_selection_data_copy, gtk_selection_data_free)
+  _CLASS_BOXEDTYPE(SelectionData, GtkSelectionData, NONE, gtk_selection_data_copy, gtk_selection_data_free, 
GTKMM_API)
   _IGNORE(gtk_selection_data_copy, gtk_selection_data_free)
 public:
 
diff --git a/gtk/src/separator.hg b/gtk/src/separator.hg
index 422cc93c..0633f81f 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/separatormenuitem.hg b/gtk/src/separatormenuitem.hg
index 0da0d74f..752f64cb 100644
--- a/gtk/src/separatormenuitem.hg
+++ b/gtk/src/separatormenuitem.hg
@@ -30,9 +30,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Menus
  */
-class SeparatorMenuItem : public MenuItem
+class GTKMM_API SeparatorMenuItem : public MenuItem
 {
-  _CLASS_GTKOBJECT(SeparatorMenuItem, GtkSeparatorMenuItem, GTK_SEPARATOR_MENU_ITEM, Gtk::MenuItem, 
GtkMenuItem)
+  _CLASS_GTKOBJECT(SeparatorMenuItem, GtkSeparatorMenuItem, GTK_SEPARATOR_MENU_ITEM, Gtk::MenuItem, 
GtkMenuItem, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 };
diff --git a/gtk/src/separatortoolitem.hg b/gtk/src/separatortoolitem.hg
index da23b13b..80013ada 100644
--- a/gtk/src/separatortoolitem.hg
+++ b/gtk/src/separatortoolitem.hg
@@ -34,9 +34,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class SeparatorToolItem : public ToolItem
+class GTKMM_API SeparatorToolItem : public ToolItem
 {
-  _CLASS_GTKOBJECT(SeparatorToolItem, GtkSeparatorToolItem, GTK_SEPARATOR_TOOL_ITEM, Gtk::ToolItem, 
GtkToolItem)
+  _CLASS_GTKOBJECT(SeparatorToolItem, GtkSeparatorToolItem, GTK_SEPARATOR_TOOL_ITEM, Gtk::ToolItem, 
GtkToolItem, , , GTKMM_API)
 public:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/settings.hg b/gtk/src/settings.hg
index be4489cc..09942f63 100644
--- a/gtk/src/settings.hg
+++ b/gtk/src/settings.hg
@@ -26,16 +26,16 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(IMPreeditStyle, GtkIMPreeditStyle)
-_WRAP_ENUM(IMStatusStyle, GtkIMStatusStyle)
+_WRAP_ENUM(IMPreeditStyle, GtkIMPreeditStyle, decl_prefix GTKMM_API)
+_WRAP_ENUM(IMStatusStyle, GtkIMStatusStyle, decl_prefix GTKMM_API)
 
 
 /** Sharing settings between applications.
  *
  */
-class Settings : public Glib::Object
+class GTKMM_API Settings : public Glib::Object
 {
-   _CLASS_GOBJECT(Settings, GtkSettings, GTK_SETTINGS, Glib::Object, GObject)
+   _CLASS_GOBJECT(Settings, GtkSettings, GTK_SETTINGS, Glib::Object, GObject, , , GTKMM_API)
    _IGNORE(gtk_settings_set_property_value, gtk_settings_set_string_property, 
gtk_settings_set_long_property, gtk_settings_set_double_property)
 protected:
 
diff --git a/gtk/src/shortcutlabel.hg b/gtk/src/shortcutlabel.hg
index f28e2684..bb482ee2 100644
--- a/gtk/src/shortcutlabel.hg
+++ b/gtk/src/shortcutlabel.hg
@@ -32,9 +32,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ShortcutLabel : public Box
+class GTKMM_API ShortcutLabel : public Box
 {
-  _CLASS_GTKOBJECT(ShortcutLabel, GtkShortcutLabel, GTK_SHORTCUT_LABEL, Box, GtkBox)
+  _CLASS_GTKOBJECT(ShortcutLabel, GtkShortcutLabel, GTK_SHORTCUT_LABEL, Box, GtkBox, , , GTKMM_API)
 
 public:
   _CTOR_DEFAULT
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 7d39ba9f..59607e01 100644
--- a/gtk/src/shortcutsshortcut.hg
+++ b/gtk/src/shortcutsshortcut.hg
@@ -23,7 +23,7 @@ _PINCLUDE(gtkmm/private/box_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 Box
+class GTKMM_API ShortcutsShortcut : public Box
 {
-  _CLASS_GTKOBJECT(ShortcutsShortcut, GtkShortcutsShortcut, GTK_SHORTCUTS_SHORTCUT, Box, GtkBox)
+  _CLASS_GTKOBJECT(ShortcutsShortcut, GtkShortcutsShortcut, GTK_SHORTCUTS_SHORTCUT, Box, GtkBox, , , 
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/sizegroup.hg b/gtk/src/sizegroup.hg
index 9f42727a..5693bad6 100644
--- a/gtk/src/sizegroup.hg
+++ b/gtk/src/sizegroup.hg
@@ -28,7 +28,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(SizeGroupMode, GtkSizeGroupMode)
+_WRAP_ENUM(SizeGroupMode, GtkSizeGroupMode, decl_prefix GTKMM_API)
 
 /** Gtk::SizeGroup provides a mechanism for grouping a number of widgets together so they all request the 
same amount of space.
  * This is typically useful when you want a column of widgets to have the same size, but you can't use a 
Gtk::Grid widget.
@@ -47,11 +47,11 @@ _WRAP_ENUM(SizeGroupMode, GtkSizeGroupMode)
  * Gtk::SIZE_GROUP_HORIZONTAL or Gtk::SIZE_GROUP_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::SIZE_GROUP_VERTICAL or 
Gtk::SIZE_GROUP_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)
 protected:
   explicit SizeGroup(SizeGroupMode mode);
diff --git a/gtk/src/socket.hg b/gtk/src/socket.hg
index 4d2c1e8d..2713296f 100644
--- a/gtk/src/socket.hg
+++ b/gtk/src/socket.hg
@@ -78,9 +78,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Socket : public Container
+class GTKMM_API Socket : public Container
 {
-  _CLASS_GTKOBJECT(Socket, GtkSocket, GTK_SOCKET, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(Socket, GtkSocket, GTK_SOCKET, Gtk::Container, GtkContainer, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/spinbutton.hg b/gtk/src/spinbutton.hg
index 852767f2..ba69c6d5 100644
--- a/gtk/src/spinbutton.hg
+++ b/gtk/src/spinbutton.hg
@@ -26,13 +26,13 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(SpinButtonUpdatePolicy, GtkSpinButtonUpdatePolicy)
-_WRAP_ENUM(SpinType, GtkSpinType)
+_WRAP_ENUM(SpinButtonUpdatePolicy, GtkSpinButtonUpdatePolicy, decl_prefix GTKMM_API)
+_WRAP_ENUM(SpinType, GtkSpinType, decl_prefix GTKMM_API)
 
 /** @ingroup gtkmmEnums */
 enum { INPUT_ERROR = -1 };
 
-class Adjustment;
+class GTKMM_API Adjustment;
 
 /** numeric Entry with up/down buttons
  * Slightly misnamed, this should be called a SpinEntry.
@@ -42,9 +42,9 @@ class Adjustment;
  *
  * @ingroup Widgets
  */
-class SpinButton : public Entry
+class GTKMM_API SpinButton : public Entry
 {
-  _CLASS_GTKOBJECT(SpinButton,GtkSpinButton,GTK_SPIN_BUTTON,Gtk::Entry,GtkEntry)
+  _CLASS_GTKOBJECT(SpinButton,GtkSpinButton,GTK_SPIN_BUTTON,Gtk::Entry,GtkEntry,,,GTKMM_API)
 public:
 
   //TODO: This constructor should be implicit
diff --git a/gtk/src/spinner.hg b/gtk/src/spinner.hg
index e5847bd1..b39cc341 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 220e279b..5a2b9933 100644
--- a/gtk/src/stack.hg
+++ b/gtk/src/stack.hg
@@ -36,10 +36,10 @@ _CC_INCLUDE(gtk/gtk.h)
  * @ingroup Containers
  * @newin{3,10}
  */
-class Stack
+class GTKMM_API Stack
   : public Container
 {
-  _CLASS_GTKOBJECT(Stack,GtkStack,GTK_STACK,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Stack,GtkStack,GTK_STACK,Gtk::Container,GtkContainer,,,GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/stacksidebar.hg b/gtk/src/stacksidebar.hg
index 173d5441..80d217ad 100644
--- a/gtk/src/stacksidebar.hg
+++ b/gtk/src/stacksidebar.hg
@@ -22,7 +22,7 @@ _PINCLUDE(gtkmm/private/bin_p.h)
 
 namespace Gtk
 {
-class Stack;
+class GTKMM_API Stack;
 
 // Gtk::StackSidebar is formally a container widget, but it's not included
 // in group Containers. A StackSidebar adds its children itself, when a Stack
@@ -40,9 +40,9 @@ class Stack;
  * @ingroup Widgets
  * @newin{3,16}
  */
-class StackSidebar : public Bin
+class GTKMM_API StackSidebar : public Bin
 {
-  _CLASS_GTKOBJECT(StackSidebar,GtkStackSidebar,GTK_STACK_SIDEBAR,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(StackSidebar,GtkStackSidebar,GTK_STACK_SIDEBAR,Gtk::Bin,GtkBin,,,GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/stackswitcher.hg b/gtk/src/stackswitcher.hg
index cc50d395..096209d6 100644
--- a/gtk/src/stackswitcher.hg
+++ b/gtk/src/stackswitcher.hg
@@ -42,10 +42,10 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,10}
  */
-class StackSwitcher
+class GTKMM_API StackSwitcher
   : public Box
 {
-  _CLASS_GTKOBJECT(StackSwitcher, GtkStackSwitcher, GTK_STACK_SWITCHER, Gtk::Box, GtkBox)
+  _CLASS_GTKOBJECT(StackSwitcher, GtkStackSwitcher, GTK_STACK_SWITCHER, Gtk::Box, GtkBox, , , GTKMM_API)
 public:
   _CTOR_DEFAULT
 
diff --git a/gtk/src/statusbar.hg b/gtk/src/statusbar.hg
index e3ae4a25..ebd349d9 100644
--- a/gtk/src/statusbar.hg
+++ b/gtk/src/statusbar.hg
@@ -38,9 +38,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class Statusbar : public HBox //Note: The C object derives from GtkBox.
+class GTKMM_API Statusbar : public HBox //Note: The C object derives from GtkBox.
 {
-  _CLASS_GTKOBJECT(Statusbar,GtkStatusbar,GTK_STATUSBAR,Gtk::HBox,GtkHBox)
+  _CLASS_GTKOBJECT(Statusbar,GtkStatusbar,GTK_STATUSBAR,Gtk::HBox,GtkHBox,,,GTKMM_API)
   _IGNORE(gtk_statusbar_push)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/statusicon.hg b/gtk/src/statusicon.hg
index c1990f52..b6082df9 100644
--- a/gtk/src/statusicon.hg
+++ b/gtk/src/statusicon.hg
@@ -60,9 +60,9 @@ namespace Gtk
  *
  * @deprecated You should consider using notifications or more modern platform-specific APIs instead.
  */
-class StatusIcon : public Glib::Object
+class GTKMM_API StatusIcon : public Glib::Object
 {
-   _CLASS_GOBJECT(StatusIcon, GtkStatusIcon, GTK_STATUS_ICON, Glib::Object, GObject)
+   _CLASS_GOBJECT(StatusIcon, GtkStatusIcon, GTK_STATUS_ICON, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT
   _IGNORE(gtk_status_icon_new)
diff --git a/gtk/src/stockitem.hg b/gtk/src/stockitem.hg
index f271ed9e..f2d20598 100644
--- a/gtk/src/stockitem.hg
+++ b/gtk/src/stockitem.hg
@@ -39,9 +39,9 @@ namespace Gtk
 
 /** @deprecated Use icon names instead of StockItem, StockID and BuiltinStockID.
  */
-class StockItem
+class GTKMM_API StockItem
 {
-  _CLASS_OPAQUE_COPYABLE(StockItem, GtkStockItem, NONE, gtk_stock_item_copy, gtk_stock_item_free)
+  _CLASS_OPAQUE_COPYABLE(StockItem, GtkStockItem, NONE, gtk_stock_item_copy, gtk_stock_item_free, GTKMM_API)
 
 public:
   StockItem(const Gtk::StockID& stock_id, const Glib::ustring& label,
diff --git a/gtk/src/stylecontext.hg b/gtk/src/stylecontext.hg
index f16fc5e1..7f25a390 100644
--- a/gtk/src/stylecontext.hg
+++ b/gtk/src/stylecontext.hg
@@ -36,13 +36,13 @@ _PINCLUDE(gtk/gtk.h)
 
 namespace Gdk
 {
-class FrameClock;
+class GTKMM_API FrameClock;
 }
 
 namespace Gtk
 {
 
-class IconSet;
+class GTKMM_API IconSet;
 
 //TODO: Add (and translate to C++) the code examples from the C documentation.
 /** This object stores styling information affecting a widget defined by WidgetPath.
@@ -100,9 +100,9 @@ class IconSet;
  *
  * @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()
 
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 babd4e13..f34ef006 100644
--- a/gtk/src/switch.hg
+++ b/gtk/src/switch.hg
@@ -34,11 +34,11 @@ namespace Gtk
  * @ingroup Widgets
  * @newin{3,0}
  */
-class Switch
+class GTKMM_API Switch
   : public Widget,
     public Activatable
 {
-  _CLASS_GTKOBJECT(Switch, GtkSwitch, GTK_SWITCH, Gtk::Widget, GtkWidget)
+  _CLASS_GTKOBJECT(Switch, GtkSwitch, GTK_SWITCH, Gtk::Widget, GtkWidget, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Activatable)
 public:
 
diff --git a/gtk/src/table.hg b/gtk/src/table.hg
index d194a499..f83b233a 100644
--- a/gtk/src/table.hg
+++ b/gtk/src/table.hg
@@ -72,9 +72,9 @@ namespace Gtk
  *
  * @see Gtk::HBox, Gtk::VBox
  */
-class Table : public Container
+class GTKMM_API Table : public Container
 {
-  _CLASS_GTKOBJECT(Table,GtkTable,GTK_TABLE,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Table,GtkTable,GTK_TABLE,Gtk::Container,GtkContainer,,,GTKMM_API)
   _IS_DEPRECATED
   _IGNORE(gtk_table_attach_defaults)
 public:
diff --git a/gtk/src/targetlist.hg b/gtk/src/targetlist.hg
index 88658159..79ab0704 100644
--- a/gtk/src/targetlist.hg
+++ b/gtk/src/targetlist.hg
@@ -29,13 +29,13 @@ _CC_INCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-class TextBuffer;
+class GTKMM_API TextBuffer;
 
-class TargetList final
+class GTKMM_API TargetList final
 {
   //GtkTargetList is actually registered as a boxed type, but it has custom
   //reference-counting instead of copy/free functions, so we use it via RefPtr.
-  _CLASS_OPAQUE_REFCOUNTED(TargetList, GtkTargetList, NONE, gtk_target_list_ref, gtk_target_list_unref)
+  _CLASS_OPAQUE_REFCOUNTED(TargetList, GtkTargetList, NONE, gtk_target_list_ref, gtk_target_list_unref, 
GTKMM_API)
   _IGNORE(gtk_target_list_ref, gtk_target_list_unref)
 public:
   static Glib::RefPtr<Gtk::TargetList> create(const std::vector<TargetEntry>& targets);
@@ -62,7 +62,7 @@ namespace Glib
 // This is needed so Glib::RefPtr<Gtk::TargetList> can be used with
 // Glib::Value and _WRAP_PROPERTY in TextBuffer.
 template <>
-class Value< Glib::RefPtr<Gtk::TargetList> > : public ValueBase_Boxed
+class GTKMM_API Value< Glib::RefPtr<Gtk::TargetList> > : public ValueBase_Boxed
 {
 public:
   typedef Glib::RefPtr<Gtk::TargetList> CppType;
diff --git a/gtk/src/tearoffmenuitem.hg b/gtk/src/tearoffmenuitem.hg
index b7257b0d..16c80b03 100644
--- a/gtk/src/tearoffmenuitem.hg
+++ b/gtk/src/tearoffmenuitem.hg
@@ -38,9 +38,9 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Menus
  */
-class TearoffMenuItem : public MenuItem
+class GTKMM_API TearoffMenuItem : public MenuItem
 {
-  _CLASS_GTKOBJECT(TearoffMenuItem,GtkTearoffMenuItem,GTK_TEAROFF_MENU_ITEM,Gtk::MenuItem,GtkMenuItem)
+  _CLASS_GTKOBJECT(TearoffMenuItem,GtkTearoffMenuItem,GTK_TEAROFF_MENU_ITEM,Gtk::MenuItem,GtkMenuItem, , , 
GTKMM_API)
   _IS_DEPRECATED
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/textattributes.hg b/gtk/src/textattributes.hg
index 3bf43622..7a050d78 100644
--- a/gtk/src/textattributes.hg
+++ b/gtk/src/textattributes.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>
@@ -26,9 +28,9 @@ namespace Gtk
 /**
  * @ingroup TextView
  */
-class TextAttributes
+class GTKMM_API TextAttributes
 {
-  _CLASS_BOXEDTYPE(TextAttributes, GtkTextAttributes, gtk_text_attributes_new, gtk_text_attributes_copy, 
gtk_text_attributes_unref)
+  _CLASS_BOXEDTYPE(TextAttributes, GtkTextAttributes, gtk_text_attributes_new, gtk_text_attributes_copy, 
gtk_text_attributes_unref, , , GTKMM_API)
 public:
 
 
diff --git a/gtk/src/textbuffer.hg b/gtk/src/textbuffer.hg
index 07df1924..7fa12f94 100644
--- a/gtk/src/textbuffer.hg
+++ b/gtk/src/textbuffer.hg
@@ -36,8 +36,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TextMark;
-class TextIter;
+class GTKMM_API TextMark;
+class GTKMM_API TextIter;
 
 /** Multi-line attributed text that can be displayed by one or more Gtk::TextView widgets.
  *
@@ -68,9 +68,9 @@ class TextIter;
  *
  * @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 87bb60e9..72e80229 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 341e45b1..f88e5ac4 100644
--- a/gtk/src/textiter.hg
+++ b/gtk/src/textiter.hg
@@ -31,10 +31,10 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TextSearchFlags, GtkTextSearchFlags)
+_WRAP_ENUM(TextSearchFlags, GtkTextSearchFlags, decl_prefix GTKMM_API)
 
-class TextBuffer;
-class TextMark;
+class GTKMM_API TextBuffer;
+class GTKMM_API TextMark;
 
 //TODO: Maybe we should have separate iterators for words, lines, and sentences.
 /** Typefed as Gtk::TextBuffer::iterator.
@@ -51,9 +51,9 @@ class TextMark;
  *
  * @ingroup TextView
  */
-class TextIter
+class GTKMM_API TextIter
 {
-  _CLASS_BOXEDTYPE_STATIC(TextIter, GtkTextIter)
+  _CLASS_BOXEDTYPE_STATIC(TextIter, GtkTextIter, GTKMM_API)
   _IGNORE(gtk_text_iter_get_attributes, gtk_text_iter_copy, gtk_text_iter_free, gtk_text_iter_equal)
   _IGNORE(gtk_text_iter_assign)
 public:
@@ -292,7 +292,7 @@ _DEPRECATE_IFDEF_END
   _WRAP_METHOD(bool in_range(const TextIter& start, const TextIter& end) const, gtk_text_iter_in_range)
   _WRAP_METHOD(void order(TextIter& second), gtk_text_iter_order)
 
-  _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare)
+  _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare, , GDKMM_API)
 };
 
 
diff --git a/gtk/src/textmark.hg b/gtk/src/textmark.hg
index 8e85195a..3bf4e864 100644
--- a/gtk/src/textmark.hg
+++ b/gtk/src/textmark.hg
@@ -17,6 +17,8 @@
  */
 
 
+_CONFIGINCLUDE(gtkmmconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(gtkmm,gtk)
@@ -25,8 +27,8 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TextBuffer;
-class TextIter;
+class GTKMM_API TextBuffer;
+class GTKMM_API TextIter;
 
 /** Typedefed as Gtk::TextBuffer::Mark. A position in the buffer, preserved across buffer modifications.
  *
@@ -55,9 +57,9 @@ class TextIter;
  *
  * @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 fbe8d9f2..dd26cc70 100644
--- a/gtk/src/texttag.hg
+++ b/gtk/src/texttag.hg
@@ -32,7 +32,7 @@ _PINCLUDE(gtk/gtk.h)
 namespace Gtk
 {
 
-class TextIter;
+class GTKMM_API TextIter;
 
 /** Typedefed as Gtk::TextBuffer::Tag.
  *
@@ -53,9 +53,9 @@ class TextIter;
  *
  * @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 c6b22cad..b352366f 100644
--- a/gtk/src/texttagtable.hg
+++ b/gtk/src/texttagtable.hg
@@ -25,7 +25,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.
  *
@@ -35,9 +35,9 @@ class TextTag;
  *
  * @ingroup TextView
  */
-class TextTagTable : public Glib::Object
+class GTKMM_API TextTagTable : public Glib::Object
 {
-   _CLASS_GOBJECT(TextTagTable, GtkTextTagTable, GTK_TEXT_TAG_TABLE, Glib::Object, GObject)
+   _CLASS_GOBJECT(TextTagTable, GtkTextTagTable, GTK_TEXT_TAG_TABLE, Glib::Object, GObject, , , GTKMM_API)
 protected:
 
   _CTOR_DEFAULT
diff --git a/gtk/src/textview.hg b/gtk/src/textview.hg
index 6ae97a1e..1af7a375 100644
--- a/gtk/src/textview.hg
+++ b/gtk/src/textview.hg
@@ -33,7 +33,7 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TextWindowType, GtkTextWindowType)
+_WRAP_ENUM(TextWindowType, GtkTextWindowType, decl_prefix GTKMM_API)
 
 
 /** @defgroup TextView TextView Classes
@@ -49,11 +49,11 @@ _WRAP_ENUM(TextWindowType, GtkTextWindowType)
  * @ingroup Containers
  * @ingroup TextView
  */
-class TextView
+class GTKMM_API TextView
  : public Container,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(TextView, GtkTextView, GTK_TEXT_VIEW, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(TextView, GtkTextView, GTK_TEXT_VIEW, Gtk::Container, GtkContainer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/toggleaction.hg b/gtk/src/toggleaction.hg
index 1d84b39d..6db1fc39 100644
--- a/gtk/src/toggleaction.hg
+++ b/gtk/src/toggleaction.hg
@@ -40,9 +40,9 @@ namespace Gtk
  * Gtk::Menu(const Glib::RefPtr<Gio::MenuModel>& model).
  * See the Gtk::Action base class for more information about the deprecation.
  */
-class ToggleAction : public Gtk::Action
+class GTKMM_API ToggleAction : public Gtk::Action
 {
-  _CLASS_GOBJECT(ToggleAction, GtkToggleAction, GTK_TOGGLE_ACTION, Gtk::Action, GtkAction)
+  _CLASS_GOBJECT(ToggleAction, GtkToggleAction, GTK_TOGGLE_ACTION, Gtk::Action, GtkAction, , , GTKMM_API)
 
 protected:
   /** Creates an empty toggle action. */
diff --git a/gtk/src/togglebutton.hg b/gtk/src/togglebutton.hg
index eacec38c..4d4eae2c 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/toggletoolbutton.hg b/gtk/src/toggletoolbutton.hg
index 89b78145..8c1eed0a 100644
--- a/gtk/src/toggletoolbutton.hg
+++ b/gtk/src/toggletoolbutton.hg
@@ -33,9 +33,9 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ToggleToolButton : public ToolButton
+class GTKMM_API ToggleToolButton : public ToolButton
 {
-  _CLASS_GTKOBJECT(ToggleToolButton, GtkToggleToolButton, GTK_TOGGLE_TOOL_BUTTON, Gtk::ToolButton, 
GtkToolButton)
+  _CLASS_GTKOBJECT(ToggleToolButton, GtkToggleToolButton, GTK_TOGGLE_TOOL_BUTTON, Gtk::ToolButton, 
GtkToolButton, , , GTKMM_API)
 public:
 
   /** Creates a new ToggleToolButton.
diff --git a/gtk/src/toolbar.hg b/gtk/src/toolbar.hg
index 78addd9b..ceae83f7 100644
--- a/gtk/src/toolbar.hg
+++ b/gtk/src/toolbar.hg
@@ -37,11 +37,11 @@ namespace Gtk
  * @ingroup Containers
  * @ingroup Toolbars
  */
-class Toolbar
+class GTKMM_API Toolbar
  : public Container,
    public ToolShell
 {
-  _CLASS_GTKOBJECT(Toolbar,GtkToolbar,GTK_TOOLBAR,Gtk::Container,GtkContainer)
+  _CLASS_GTKOBJECT(Toolbar,GtkToolbar,GTK_TOOLBAR,Gtk::Container,GtkContainer,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(ToolShell)
 public:
   _CTOR_DEFAULT()
diff --git a/gtk/src/toolbutton.hg b/gtk/src/toolbutton.hg
index 2e651a1f..2432bb2e 100644
--- a/gtk/src/toolbutton.hg
+++ b/gtk/src/toolbutton.hg
@@ -30,9 +30,9 @@ namespace Gtk
  * A ToolButton is are Gtk::ToolItem containing a button.
  * @ingroup Widgets
  */
-class ToolButton : public ToolItem
+class GTKMM_API ToolButton : public ToolItem
 {
-  _CLASS_GTKOBJECT(ToolButton, GtkToolButton, GTK_TOOL_BUTTON, Gtk::ToolItem, GtkToolItem)
+  _CLASS_GTKOBJECT(ToolButton, GtkToolButton, GTK_TOOL_BUTTON, Gtk::ToolItem, GtkToolItem, , , GTKMM_API)
 public:
 
   /** Creates a new ToolButton.
diff --git a/gtk/src/toolitem.hg b/gtk/src/toolitem.hg
index 78bbefc1..f870ea0d 100644
--- a/gtk/src/toolitem.hg
+++ b/gtk/src/toolitem.hg
@@ -43,11 +43,11 @@ namespace Gtk
  *
  * @ingroup Widgets
  */
-class ToolItem
+class GTKMM_API ToolItem
  : public Bin,
    public Activatable
 {
-  _CLASS_GTKOBJECT(ToolItem, GtkToolItem, GTK_TOOL_ITEM, Gtk::Bin, GtkBin)
+  _CLASS_GTKOBJECT(ToolItem, GtkToolItem, GTK_TOOL_ITEM, Gtk::Bin, GtkBin, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Activatable)
 public:
   _CTOR_DEFAULT
diff --git a/gtk/src/toolitemgroup.hg b/gtk/src/toolitemgroup.hg
index 8a6811e3..8144a909 100644
--- a/gtk/src/toolitemgroup.hg
+++ b/gtk/src/toolitemgroup.hg
@@ -33,11 +33,11 @@ namespace Gtk
  * @ingroup Widgets
  * @ingroup Containers
  */
-class ToolItemGroup
+class GTKMM_API ToolItemGroup
  : public Container,
    public ToolShell
 {
-  _CLASS_GTKOBJECT(ToolItemGroup, GtkToolItemGroup, GTK_TOOL_ITEM_GROUP, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(ToolItemGroup, GtkToolItemGroup, GTK_TOOL_ITEM_GROUP, Gtk::Container, GtkContainer, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(ToolShell)
 public:
   _WRAP_CTOR(ToolItemGroup(const Glib::ustring& label = Glib::ustring()), gtk_tool_item_group_new)
diff --git a/gtk/src/toolpalette.hg b/gtk/src/toolpalette.hg
index 879e575a..7ab35b94 100644
--- a/gtk/src/toolpalette.hg
+++ b/gtk/src/toolpalette.hg
@@ -27,7 +27,7 @@ _PINCLUDE(gtkmm/private/container_p.h)
 namespace Gtk
 {
 
-_WRAP_ENUM(ToolPaletteDragTargets, GtkToolPaletteDragTargets)
+_WRAP_ENUM(ToolPaletteDragTargets, GtkToolPaletteDragTargets, decl_prefix GTKMM_API)
 
 /** A ToolPalette allows you to add ToolItems to a palette-like container with
  * various categories and drag and drop support.
@@ -46,12 +46,12 @@ _WRAP_ENUM(ToolPaletteDragTargets, GtkToolPaletteDragTargets)
  * @ingroup Widgets
  * @ingroup Containers
  */
-class ToolPalette
+class GTKMM_API ToolPalette
 : public Container,
   public Orientable,
   public Scrollable
 {
-  _CLASS_GTKOBJECT(ToolPalette, GtkToolPalette, GTK_TOOL_PALETTE, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(ToolPalette, GtkToolPalette, GTK_TOOL_PALETTE, Gtk::Container, GtkContainer, , , 
GTKMM_API)
   _IMPLEMENTS_INTERFACE(Orientable)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
diff --git a/gtk/src/toolshell.hg b/gtk/src/toolshell.hg
index b930bc6c..661981d1 100644
--- a/gtk/src/toolshell.hg
+++ b/gtk/src/toolshell.hg
@@ -37,9 +37,9 @@ namespace Gtk
  *
  * @newin{2,14}
  */
-class ToolShell : public Glib::Interface
+class GTKMM_API ToolShell : public Glib::Interface
 {
-  _CLASS_INTERFACE(ToolShell, GtkToolShell, GTK_TOOL_SHELL, GtkToolShellIface)
+  _CLASS_INTERFACE(ToolShell, GtkToolShell, GTK_TOOL_SHELL, GtkToolShellIface, , , GTKMM_API)
 
 public:
   _WRAP_METHOD(IconSize get_icon_size() const, gtk_tool_shell_get_icon_size)
diff --git a/gtk/src/tooltip.hg b/gtk/src/tooltip.hg
index ee14371d..0ee1f5aa 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 ee111117..fe3141d7 100644
--- a/gtk/src/treedragdest.hg
+++ b/gtk/src/treedragdest.hg
@@ -36,9 +36,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 b6dca9f4..39a7214d 100644
--- a/gtk/src/treedragsource.hg
+++ b/gtk/src/treedragsource.hg
@@ -36,9 +36,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 c1ebf26a..e05dcddb 100644
--- a/gtk/src/treeiter.hg
+++ b/gtk/src/treeiter.hg
@@ -28,16 +28,16 @@ _DEFS(gtkmm,gtk)
 namespace Gtk
 {
 
-class TreeModel;
-class TreeRow;
-class TreeNodeChildren;
+class GTKMM_API TreeModel;
+class GTKMM_API TreeRow;
+class GTKMM_API 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.
 };
@@ -92,7 +92,7 @@ class TreeIterBase
  * The Gtk::TreeModel iterator.
  * @ingroup TreeView
  */
-class TreeIter : public TreeIterBase
+class GTKMM_API TreeIter : public TreeIterBase
 {
 public:
   typedef std::bidirectional_iterator_tag iterator_category;
@@ -200,9 +200,9 @@ protected:
   TreeModel* model_;
   bool       is_end_;
 
-  friend class Gtk::TreeRow;
-  friend class Gtk::TreeNodeChildren;
-  friend class Gtk::TreeModel;
+  friend class GTKMM_API Gtk::TreeRow;
+  friend class GTKMM_API Gtk::TreeNodeChildren;
+  friend class GTKMM_API Gtk::TreeModel;
 
 #endif // DOXYGEN_SHOULD_SKIP_THIS
 };
@@ -247,7 +247,7 @@ private:
  * You can use a const TreeModel::Row& for any parameter that takes a const TreeModel::iterator&.
  * @ingroup TreeView
  */
-class TreeRow : public TreeIter //We use public inheritance so that we can cast from a TreeRow to a TreeIter.
+class GTKMM_API TreeRow : public TreeIter //We use public inheritance so that we can cast from a TreeRow to 
a TreeIter.
 {
 public:
 
@@ -364,7 +364,7 @@ private:
  * Virtual container of TreeModel::Row items.
  * @ingroup TreeView
  */
-class TreeNodeChildren : public TreeIter
+class GTKMM_API TreeNodeChildren : public TreeIter
 {
 public:
   typedef Gtk::TreeRow  value_type;
diff --git a/gtk/src/treemodel.hg b/gtk/src/treemodel.hg
index 0aae94c9..3198ae74 100644
--- a/gtk/src/treemodel.hg
+++ b/gtk/src/treemodel.hg
@@ -29,13 +29,13 @@ _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)
-_WRAP_ENUM(TreeModelFlags, GtkTreeModelFlags)
+_WRAP_ENUM(TreeModelFlags, GtkTreeModelFlags, decl_prefix GTKMM_API)
 
 //TODO: Remove any mention of null arguments from the method documentation, by adding overrides in 
gtk_docs_override.xml.
 /** This class defines a generic tree interface for use by the Gtk::TreeView widget.
@@ -80,9 +80,9 @@ _WRAP_ENUM(TreeModelFlags, GtkTreeModelFlags)
  * 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,
@@ -433,10 +433,10 @@ dnl
   //This might not need to be virtual, but it's not a big deal. murrayc.
   virtual void get_value_impl(const iterator& row, int column, Glib::ValueBase& value) const;
 
-  friend class Gtk::TreeModelFilter;
-  friend class Gtk::TreeModelSort;
-  friend class Gtk::TreeRow;
-  friend class Gtk::TreeIter;
+  friend class GTKMM_API Gtk::TreeModelFilter;
+  friend class GTKMM_API Gtk::TreeModelSort;
+  friend class GTKMM_API Gtk::TreeRow;
+  friend class GTKMM_API Gtk::TreeIter;
 };
 
 } // namespace Gtk
diff --git a/gtk/src/treemodelfilter.hg b/gtk/src/treemodelfilter.hg
index b008eac0..66b3d8d8 100644
--- a/gtk/src/treemodelfilter.hg
+++ b/gtk/src/treemodelfilter.hg
@@ -31,11 +31,11 @@ namespace Gtk
  * @ingroup TreeView
  *
  */
-class TreeModelFilter :
+class GTKMM_API TreeModelFilter :
   public Glib::Object,
   public TreeModel
 {
-  _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)
 
 protected:
diff --git a/gtk/src/treemodelsort.hg b/gtk/src/treemodelsort.hg
index 4eb9ec59..749ef3ef 100644
--- a/gtk/src/treemodelsort.hg
+++ b/gtk/src/treemodelsort.hg
@@ -48,9 +48,9 @@ namespace Gtk
  *
  * @ingroup TreeView
  */
-class TreeModelSort : public Glib::Object, public TreeModel, public TreeSortable
+class GTKMM_API TreeModelSort : public Glib::Object, public TreeModel, public TreeSortable
 {
-  _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)
 
diff --git a/gtk/src/treepath.hg b/gtk/src/treepath.hg
index 233de94d..e18e0f92 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 e0edf80a..3532f12c 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 32aa45f8..75ed4457 100644
--- a/gtk/src/treeselection.hg
+++ b/gtk/src/treeselection.hg
@@ -28,9 +28,9 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gtk
 {
 
-class TreeView;
-class TreeModel;
-class TreePath;
+class GTKMM_API TreeView;
+class GTKMM_API TreeModel;
+class GTKMM_API TreePath;
 
 /** Typedefed as Gtk::TreeView::Selection.
  * This is a helper object to manage the selection for a Gtk::TreeView widget.
@@ -56,9 +56,9 @@ class TreePath;
  *
  * @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)
    _IGNORE(gtk_tree_selection_get_selected,
            gtk_tree_selection_get_selected_rows, gtk_tree_selection_count_selected_rows)
 protected:
diff --git a/gtk/src/treesortable.hg b/gtk/src/treesortable.hg
index bbca9302..eedce6c8 100644
--- a/gtk/src/treesortable.hg
+++ b/gtk/src/treesortable.hg
@@ -44,9 +44,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 1e2adbaa..e53f9bba 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 8d269b91..217cc21c 100644
--- a/gtk/src/treeview.hg
+++ b/gtk/src/treeview.hg
@@ -38,13 +38,13 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TreeViewDropPosition, GtkTreeViewDropPosition)
-_WRAP_ENUM(TreeViewGridLines, GtkTreeViewGridLines)
+_WRAP_ENUM(TreeViewDropPosition, GtkTreeViewDropPosition, decl_prefix GTKMM_API)
+_WRAP_ENUM(TreeViewGridLines, GtkTreeViewGridLines, decl_prefix GTKMM_API)
 
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
-class TreeView;
+class GTKMM_API TreeView;
 
 namespace TreeView_Private
 {
@@ -76,8 +76,8 @@ namespace TreeView_Private
 #endif //DOXYGEN_SHOULD_SKIP_THIS
 
 
-//class TreeViewColumn;
-class TreeModel;
+//class GTKMM_API TreeViewColumn;
+class GTKMM_API TreeModel;
 
 /** @defgroup TreeView TreeView Classes
  * These classes are used with the Gtk::TreeView widget.
@@ -96,11 +96,11 @@ class TreeModel;
  * @ingroup Containers
  * @ingroup TreeView
  */
-class TreeView
+class GTKMM_API TreeView
  : public Container,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(TreeView, GtkTreeView, GTK_TREE_VIEW, Gtk::Container, GtkContainer)
+  _CLASS_GTKOBJECT(TreeView, GtkTreeView, GTK_TREE_VIEW, Gtk::Container, GtkContainer, , , GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
   _IGNORE(gtk_tree_view_get_path_at_pos, gtk_tree_view_set_destroy_count_func, 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)
diff --git a/gtk/src/treeviewcolumn.hg b/gtk/src/treeviewcolumn.hg
index 3a702738..b1d21d8c 100644
--- a/gtk/src/treeviewcolumn.hg
+++ b/gtk/src/treeviewcolumn.hg
@@ -32,13 +32,13 @@ namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(TreeViewColumnSizing, GtkTreeViewColumnSizing)
+_WRAP_ENUM(TreeViewColumnSizing, GtkTreeViewColumnSizing, decl_prefix GTKMM_API)
 
 // We use GTKMM_API here because gcc needs the extra help on win32 , even
 // when using --export-all and auto-import.
 // See http://bugzilla.gnome.org/show_bug.cgi?id=309030.
 
-class TreeView;
+class GTKMM_API TreeView;
 
 //TODO: Deal with the GtkObject->GObject change?
 /** Typedefed as Gtk::TreeView::Column.
@@ -50,7 +50,7 @@ class GTKMM_API TreeViewColumn
   : public Object,
     public CellLayout
 {
-  _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)
   _IGNORE(gtk_tree_view_column_set_cell_data_func)
 public:
diff --git a/gtk/src/uimanager.hg b/gtk/src/uimanager.hg
index d554899a..3d41d395 100644
--- a/gtk/src/uimanager.hg
+++ b/gtk/src/uimanager.hg
@@ -35,7 +35,7 @@ _IS_DEPRECATED // This whole file is deprecated.
 namespace Gtk
 {
 
-_WRAP_ENUM(UIManagerItemType, GtkUIManagerItemType, deprecated "Because Gtk::UIManager is deprecated.")
+_WRAP_ENUM(UIManagerItemType, GtkUIManagerItemType, deprecated "Because Gtk::UIManager is deprecated.", 
decl_prefix GTKMM_API)
 
 /** Constructing menus and toolbars from an XML description.
  *
@@ -184,9 +184,9 @@ _WRAP_ENUM(UIManagerItemType, GtkUIManagerItemType, deprecated "Because Gtk::UIM
  * <a href="https://developer.gnome.org/gtkmm-tutorial/stable/";>Programming with gtkmm 3</a>
  * book show how to construct menus and toolbars with Gtk::Builder.
  */
-class UIManager : public Glib::Object
+class GTKMM_API UIManager : public Glib::Object
 {
-  _CLASS_GOBJECT(UIManager, GtkUIManager, GTK_UI_MANAGER, Glib::Object, GObject)
+  _CLASS_GOBJECT(UIManager, GtkUIManager, GTK_UI_MANAGER, Glib::Object, GObject, , , GTKMM_API)
 protected:
   _CTOR_DEFAULT()
 
diff --git a/gtk/src/viewport.hg b/gtk/src/viewport.hg
index 22feca8e..a5353556 100644
--- a/gtk/src/viewport.hg
+++ b/gtk/src/viewport.hg
@@ -30,11 +30,11 @@ namespace Gtk {
  * @ingroup Widgets
  * @ingroup Containers
  */
-class Viewport
+class GTKMM_API Viewport
  : public Bin,
    public Scrollable
 {
-  _CLASS_GTKOBJECT(Viewport,GtkViewport,GTK_VIEWPORT,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(Viewport,GtkViewport,GTK_VIEWPORT,Gtk::Bin,GtkBin,,,GTKMM_API)
   _IMPLEMENTS_INTERFACE(Scrollable)
 public:
 
diff --git a/gtk/src/volumebutton.hg b/gtk/src/volumebutton.hg
index 6b45543b..fdbe9185 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 d2df2243..424c849e 100644
--- a/gtk/src/widget.hg
+++ b/gtk/src/widget.hg
@@ -57,26 +57,26 @@ typedef struct _GtkTargetEntry GtkTargetEntry;
 
 namespace Gdk
 {
-class FrameClock;
+class GTKMM_API FrameClock;
 }
 
 namespace Gtk
 {
 
 _CC_INCLUDE(gtk/gtk.h)
-_WRAP_ENUM(DestDefaults, GtkDestDefaults)
-_WRAP_ENUM(WidgetHelpType, GtkWidgetHelpType)
-_WRAP_ENUM(DragResult, GtkDragResult)
-
-class Action;
-class Style;
-class AccelGroup;
-class Adjustment;
-class Window;
-class Container;
-class Settings;
-class Tooltip;
-class StockID; //deprecated.
+_WRAP_ENUM(DestDefaults, GtkDestDefaults, decl_prefix GTKMM_API)
+_WRAP_ENUM(WidgetHelpType, GtkWidgetHelpType, decl_prefix GTKMM_API)
+_WRAP_ENUM(DragResult, GtkDragResult, decl_prefix GTKMM_API)
+
+class GTKMM_API Action;
+class GTKMM_API Style;
+class GTKMM_API AccelGroup;
+class GTKMM_API Adjustment;
+class GTKMM_API Window;
+class GTKMM_API Container;
+class GTKMM_API Settings;
+class GTKMM_API Tooltip;
+class GTKMM_API StockID; //deprecated.
 
 // Gtk::Allocation is a typedef of Gdk::Rectangle because GtkAllocation is
 // a typedef of GdkRectangle.
@@ -103,20 +103,20 @@ typedef Gdk::Rectangle Allocation;
  * capture events.  Widgets in the Gtk::Misc group for example lack
  * a Gdk::Window.
  */
-class Widget
+class GTKMM_API Widget
 : public Object,
   public Buildable
 #ifdef GTKMM_ATKMM_ENABLED
   ,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(Atk::Implementor, ifdef GTKMM_ATKMM_ENABLED)
   _IGNORE(gtk_widget_set_visual, gtk_widget_destroy, gtk_widget_destroyed, gtk_widget_hide_on_delete,
           gtk_widget_style_get_valist, gtk_widget_list_accel_closures, gtk_widget_style_get)
 public:
-  friend class Main;
+  friend class GTKMM_API Main;
   _CUSTOM_DTOR
   _DOCUMENT_DTOR(Destroys the widget. The widget will be automatically removed from the parent container.)
 
diff --git a/gtk/src/widgetpath.hg b/gtk/src/widgetpath.hg
index ac54d19e..2a5ac5ed 100644
--- a/gtk/src/widgetpath.hg
+++ b/gtk/src/widgetpath.hg
@@ -36,9 +36,9 @@ namespace Gtk
  *
  * @newin{3,0}
  */
-class WidgetPath
+class GTKMM_API WidgetPath
 {
-  _CLASS_BOXEDTYPE(WidgetPath, GtkWidgetPath, gtk_widget_path_new, gtk_widget_path_copy, 
gtk_widget_path_free)
+  _CLASS_BOXEDTYPE(WidgetPath, GtkWidgetPath, gtk_widget_path_new, gtk_widget_path_copy, 
gtk_widget_path_free, , , GTKMM_API)
   _IGNORE(gtk_widget_path_new, gtk_widget_path_copy, gtk_widget_path_free)
 public:
 
diff --git a/gtk/src/window.hg b/gtk/src/window.hg
index f68e7127..5d4e1f03 100644
--- a/gtk/src/window.hg
+++ b/gtk/src/window.hg
@@ -29,8 +29,8 @@ _PINCLUDE(gtkmm/private/bin_p.h)
 namespace Gtk
 {
 
-class AccelGroup;
-class WindowGroup;
+class GTKMM_API AccelGroup;
+class GTKMM_API WindowGroup;
 
 /** Toplevel Window.
  * This represents all widgets which are physical windows controlled
@@ -41,9 +41,9 @@ class WindowGroup;
  * Gtk::manage() has no effect on Windows because they have no parent Containers.
  * @ingroup Widgets
  */
-class Window : public Bin
+class GTKMM_API Window : public Bin
 {
-  _CLASS_GTKOBJECT(Window,GtkWindow,GTK_WINDOW,Gtk::Bin,GtkBin)
+  _CLASS_GTKOBJECT(Window,GtkWindow,GTK_WINDOW,Gtk::Bin,GtkBin, , , GTKMM_API)
   _UNMANAGEABLE
   _IGNORE(gtk_window_set_has_user_ref_count, gtk_window_set_destroy_with_parent)
 
diff --git a/gtk/src/windowgroup.hg b/gtk/src/windowgroup.hg
index ebab528b..8473d5e3 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()



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