[glibmm/use-dllexport-2-62: 2/8] gio/src/*.hg: Mark classes and functions with GIOMM_API



commit 6c99b4fbdbaaf973c9a5d47d36c2119a2509a6ff
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Fri Mar 6 12:28:52 2020 +0800

    gio/src/*.hg: Mark classes and functions with GIOMM_API
    
    This prepares the build to export symbols using compiler directives, in
    our bid to drop gendef.exe.  We will also mark pre-declarations of usage
    of glibmm class items with GLIBMM_API as well.

 gio/src/action.hg                  |  4 ++--
 gio/src/actiongroup.hg             | 10 +++++-----
 gio/src/actionmap.hg               |  6 +++---
 gio/src/appinfo.hg                 |  6 +++---
 gio/src/applaunchcontext.hg        |  8 ++++----
 gio/src/application.hg             |  4 ++--
 gio/src/applicationcommandline.hg  |  4 ++--
 gio/src/asyncinitable.hg           |  6 +++---
 gio/src/asyncresult.hg             |  6 +++---
 gio/src/bufferedinputstream.hg     |  4 ++--
 gio/src/bufferedoutputstream.hg    |  4 ++--
 gio/src/cancellable.hg             |  5 +++--
 gio/src/charsetconverter.hg        |  4 ++--
 gio/src/converter.hg               |  6 ++++--
 gio/src/converterinputstream.hg    | 10 +++++-----
 gio/src/converteroutputstream.hg   | 10 +++++-----
 gio/src/credentials.hg             |  6 ++++--
 gio/src/datainputstream.hg         |  4 ++--
 gio/src/dataoutputstream.hg        |  4 ++--
 gio/src/dbusactiongroup.hg         |  6 +++---
 gio/src/dbusaddress.hg             | 12 ++++++++++++
 gio/src/dbusauthobserver.hg        |  4 ++--
 gio/src/dbusconnection.hg          | 10 +++++-----
 gio/src/dbuserror.hg               |  4 +++-
 gio/src/dbuserrorutils.hg          |  7 ++++++-
 gio/src/dbusinterface.hg           | 10 ++++++----
 gio/src/dbusinterfaceskeleton.hg   | 10 +++++-----
 gio/src/dbusinterfacevtable.hg     |  2 +-
 gio/src/dbusintrospection.hg       | 30 ++++++++++++++++--------------
 gio/src/dbusmenumodel.hg           |  6 +++---
 gio/src/dbusmessage.hg             |  6 ++++--
 gio/src/dbusmethodinvocation.hg    |  8 ++++----
 gio/src/dbusobject.hg              |  8 +++++---
 gio/src/dbusobjectmanager.hg       | 10 ++++++----
 gio/src/dbusobjectmanagerclient.hg |  4 ++--
 gio/src/dbusobjectmanagerserver.hg |  4 ++--
 gio/src/dbusobjectproxy.hg         |  4 ++--
 gio/src/dbusobjectskeleton.hg      |  4 ++--
 gio/src/dbusownname.hg             |  2 ++
 gio/src/dbusproxy.hg               |  4 ++--
 gio/src/dbusserver.hg              |  4 ++--
 gio/src/dbussubtreevtable.hg       |  2 +-
 gio/src/dbusutils.hg               |  8 ++++++++
 gio/src/dbuswatchname.hg           |  3 +++
 gio/src/desktopappinfo.hg          |  6 +++---
 gio/src/drive.hg                   |  7 ++++---
 gio/src/emblem.hg                  |  4 ++--
 gio/src/emblemedicon.hg            |  4 ++--
 gio/src/error.hg                   |  8 +++++---
 gio/src/file.hg                    | 11 ++++++-----
 gio/src/fileattributeinfo.hg       |  4 +++-
 gio/src/fileattributeinfolist.hg   |  5 +++--
 gio/src/fileenumerator.hg          |  6 +++---
 gio/src/fileicon.hg                |  4 ++--
 gio/src/fileinfo.hg                |  9 +++++----
 gio/src/fileinputstream.hg         |  4 ++--
 gio/src/fileiostream.hg            |  4 ++--
 gio/src/filemonitor.hg             |  8 +++++---
 gio/src/filenamecompleter.hg       |  8 +++++---
 gio/src/fileoutputstream.hg        |  4 ++--
 gio/src/filterinputstream.hg       |  4 ++--
 gio/src/filteroutputstream.hg      |  4 ++--
 gio/src/icon.hg                    |  6 ++++--
 gio/src/inetaddress.hg             |  6 ++++--
 gio/src/inetsocketaddress.hg       |  4 ++--
 gio/src/initable.hg                |  4 ++--
 gio/src/inputstream.hg             |  4 ++--
 gio/src/iostream.hg                |  4 ++--
 gio/src/listmodel.hg               |  6 ++++--
 gio/src/liststore.hg               |  4 ++--
 gio/src/loadableicon.hg            |  4 ++--
 gio/src/memoryinputstream.hg       |  4 ++--
 gio/src/memoryoutputstream.hg      |  6 +++---
 gio/src/menu.hg                    |  4 ++--
 gio/src/menuattributeiter.hg       |  6 ++++--
 gio/src/menuitem.hg                |  4 ++--
 gio/src/menulinkiter.hg            |  8 +++++---
 gio/src/menumodel.hg               | 10 ++++++----
 gio/src/mount.hg                   | 13 +++++++------
 gio/src/mountoperation.hg          |  6 ++++--
 gio/src/networkaddress.hg          |  4 ++--
 gio/src/networkmonitor.hg          |  4 ++--
 gio/src/networkservice.hg          |  4 ++--
 gio/src/notification.hg            |  6 +++---
 gio/src/outputstream.hg            |  4 ++--
 gio/src/permission.hg              |  4 ++--
 gio/src/pollableinputstream.hg     |  8 +++++---
 gio/src/pollableoutputstream.hg    |  8 +++++---
 gio/src/proxy.hg                   |  4 ++--
 gio/src/proxyaddress.hg            |  4 ++--
 gio/src/proxyresolver.hg           |  4 ++--
 gio/src/remoteactiongroup.hg       |  6 ++++--
 gio/src/resolver.hg                | 15 ++++++++++++---
 gio/src/resource.hg                |  6 +++---
 gio/src/seekable.hg                |  4 ++--
 gio/src/settings.hg                |  6 +++---
 gio/src/settingsschema.hg          |  4 ++--
 gio/src/settingsschemakey.hg       |  4 ++--
 gio/src/settingsschemasource.hg    |  4 ++--
 gio/src/simpleaction.hg            |  4 ++--
 gio/src/simpleactiongroup.hg       | 10 +++++-----
 gio/src/simpleiostream.hg          |  4 ++--
 gio/src/simplepermission.hg        |  4 ++--
 gio/src/socket.hg                  |  6 +++---
 gio/src/socketaddress.hg           |  4 ++--
 gio/src/socketaddressenumerator.hg |  6 +++---
 gio/src/socketclient.hg            |  4 ++--
 gio/src/socketconnectable.hg       |  4 ++--
 gio/src/socketconnection.hg        |  4 ++--
 gio/src/socketcontrolmessage.hg    |  6 ++++--
 gio/src/socketlistener.hg          |  4 ++--
 gio/src/socketservice.hg           |  4 ++--
 gio/src/srvtarget.hg               |  6 ++++--
 gio/src/tcpconnection.hg           |  4 ++--
 gio/src/tcpwrapperconnection.hg    |  4 ++--
 gio/src/themedicon.hg              |  4 ++--
 gio/src/threadedsocketservice.hg   |  4 ++--
 gio/src/tlscertificate.hg          | 10 ++++++----
 gio/src/tlsclientconnection.hg     |  6 +++---
 gio/src/tlsconnection.hg           | 10 +++++-----
 gio/src/tlsdatabase.hg             | 14 +++++++-------
 gio/src/tlsfiledatabase.hg         |  4 ++--
 gio/src/tlsinteraction.hg          |  8 ++++----
 gio/src/tlspassword.hg             |  6 ++++--
 gio/src/tlsserverconnection.hg     |  4 ++--
 gio/src/unixconnection.hg          |  4 ++--
 gio/src/unixcredentialsmessage.hg  |  6 +++---
 gio/src/unixfdlist.hg              |  6 ++++--
 gio/src/unixfdmessage.hg           |  6 +++---
 gio/src/unixinputstream.hg         |  4 ++--
 gio/src/unixmount.hg               |  4 ++--
 gio/src/unixoutputstream.hg        |  4 ++--
 gio/src/unixsocketaddress.hg       |  6 +++---
 gio/src/volume.hg                  | 11 ++++++-----
 gio/src/volumemonitor.hg           |  4 ++--
 gio/src/zlibcompressor.hg          |  8 +++++---
 gio/src/zlibdecompressor.hg        |  6 +++---
 137 files changed, 456 insertions(+), 354 deletions(-)
---
diff --git a/gio/src/action.hg b/gio/src/action.hg
index c893cbca..9b947622 100644
--- a/gio/src/action.hg
+++ b/gio/src/action.hg
@@ -63,9 +63,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class Action : public Glib::Interface
+class GIOMM_API Action : public Glib::Interface
 {
-  _CLASS_INTERFACE(Action, GAction, G_ACTION, GActionInterface)
+  _CLASS_INTERFACE(Action, GAction, G_ACTION, GActionInterface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_name() const, g_action_get_name)
diff --git a/gio/src/actiongroup.hg b/gio/src/actiongroup.hg
index 2c40a165..1dca1cd1 100644
--- a/gio/src/actiongroup.hg
+++ b/gio/src/actiongroup.hg
@@ -31,9 +31,9 @@ typedef struct _GActionGroupInterface GActionGroupInterface;
 namespace Glib
 {
 
-class VariantBase;
-class VariantContainerBase;
-class VariantType;
+class GIOMM_API VariantBase;
+class GIOMM_API VariantContainerBase;
+class GIOMM_API VariantType;
 
 }
 
@@ -56,9 +56,9 @@ namespace Gio
  * Signals are emitted on the action group in response to state changes on
  * individual actions.
  */
-class ActionGroup : public Glib::Interface
+class GIOMM_API ActionGroup : public Glib::Interface
 {
-  _CLASS_INTERFACE(ActionGroup, GActionGroup, G_ACTION_GROUP, GActionGroupInterface)
+  _CLASS_INTERFACE(ActionGroup, GActionGroup, G_ACTION_GROUP, GActionGroupInterface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(bool has_action(const Glib::ustring& action_name) const, g_action_group_has_action)
diff --git a/gio/src/actionmap.hg b/gio/src/actionmap.hg
index 74b3dd60..43075b72 100644
--- a/gio/src/actionmap.hg
+++ b/gio/src/actionmap.hg
@@ -28,7 +28,7 @@ typedef struct _GActionMapInterface GActionMapInterface;
 namespace Gio
 {
 
-class Action;
+class GIOMM_API Action;
 
 //TODO: Instead derive from ActionGroup, when we can break ABI,
 //because the GActionMap interface requires the GActionGroup interface.
@@ -44,9 +44,9 @@ class Action;
  * or "win."). This is the motivation for the 'Map' part of the interface name.
  * @newin{2,32}
  */
-class ActionMap : public Glib::Interface
+class GIOMM_API ActionMap : public Glib::Interface
 {
-  _CLASS_INTERFACE(ActionMap, GActionMap, G_ACTION_MAP, GActionMapInterface)
+  _CLASS_INTERFACE(ActionMap, GActionMap, G_ACTION_MAP, GActionMapInterface, , , GIOMM_API)
 
   // The various add_action...() methods are our equivalent for g_action_map_add_action_entries().
   _IGNORE(g_action_map_add_action_entries)
diff --git a/gio/src/appinfo.hg b/gio/src/appinfo.hg
index 4dd48fa7..0c34ba98 100644
--- a/gio/src/appinfo.hg
+++ b/gio/src/appinfo.hg
@@ -44,7 +44,7 @@ namespace Gio
 
 _WRAP_ENUM(AppInfoCreateFlags, GAppInfoCreateFlags, NO_GTYPE)
 
-class File;
+class GIOMM_API File;
 
 /** Application information, to describe applications installed on the system,
  * and launch them.
@@ -52,9 +52,9 @@ class File;
  *
  * @newin{2,16}
  */
-class AppInfo : public Glib::Interface
+class GIOMM_API AppInfo : public Glib::Interface
 {
-  _CLASS_INTERFACE(AppInfo, GAppInfo, G_APP_INFO, GAppInfoIface)
+  _CLASS_INTERFACE(AppInfo, GAppInfo, G_APP_INFO, GAppInfoIface, , , GIOMM_API)
 
 public:
   static Glib::RefPtr<AppInfo> create_from_commandline(const std::string& commandline,
diff --git a/gio/src/applaunchcontext.hg b/gio/src/applaunchcontext.hg
index 3096e8ef..c81ff362 100644
--- a/gio/src/applaunchcontext.hg
+++ b/gio/src/applaunchcontext.hg
@@ -30,17 +30,17 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class AppInfo;
-class File;
+class GIOMM_API AppInfo;
+class GIOMM_API File;
 
 /** This is used to handle, for instance, startup notification and launching of the new application on the 
same screen as the launching window.
  * See also AppInfo.
  *
  * @newin{2,16}
  */
-class AppLaunchContext : public Glib::Object
+class GIOMM_API AppLaunchContext : public Glib::Object
 {
-  _CLASS_GOBJECT(AppLaunchContext, GAppLaunchContext, G_APP_LAUNCH_CONTEXT, Glib::Object, GObject)
+  _CLASS_GOBJECT(AppLaunchContext, GAppLaunchContext, G_APP_LAUNCH_CONTEXT, Glib::Object, GObject, , , 
GIOMM_API)
 
 protected:
   _CTOR_DEFAULT()
diff --git a/gio/src/application.hg b/gio/src/application.hg
index 6dea85e3..a8bf9660 100644
--- a/gio/src/application.hg
+++ b/gio/src/application.hg
@@ -83,9 +83,9 @@ _WRAP_ENUM(ApplicationFlags, GApplicationFlags)
  *
  * @newin{2,32}
  */
-class Application : public Glib::Object, public ActionGroup, public ActionMap
+class GIOMM_API Application : public Glib::Object, public ActionGroup, public ActionMap
 {
-  _CLASS_GOBJECT(Application, GApplication, G_APPLICATION, Glib::Object, GObject)
+  _CLASS_GOBJECT(Application, GApplication, G_APPLICATION, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(ActionGroup)
   _IMPLEMENTS_INTERFACE(ActionMap)
 
diff --git a/gio/src/applicationcommandline.hg b/gio/src/applicationcommandline.hg
index 3c117456..1bc0a095 100644
--- a/gio/src/applicationcommandline.hg
+++ b/gio/src/applicationcommandline.hg
@@ -54,9 +54,9 @@ namespace Gio
  * return until the editing is done.
  * @newin{2,32}
  */
-class ApplicationCommandLine : public Glib::Object
+class GIOMM_API ApplicationCommandLine : public Glib::Object
 {
-  _CLASS_GOBJECT(ApplicationCommandLine, GApplicationCommandLine, G_APPLICATION_COMMAND_LINE, Glib::Object, 
GObject)
+  _CLASS_GOBJECT(ApplicationCommandLine, GApplicationCommandLine, G_APPLICATION_COMMAND_LINE, Glib::Object, 
GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/asyncinitable.hg b/gio/src/asyncinitable.hg
index 6961eddb..842ec45d 100644
--- a/gio/src/asyncinitable.hg
+++ b/gio/src/asyncinitable.hg
@@ -29,7 +29,7 @@ typedef struct _GAsyncInitableIface GAsyncInitableIface;
 namespace Gio
 {
 
-class Cancellable;
+class GIOMM_API Cancellable;
 
 /** AsyncInitable - Asynchronously failable object initialization interface.
  * This is the asynchronous version of Initable; it behaves the same in all
@@ -45,9 +45,9 @@ class Cancellable;
  * g_async_initable_init_async() under the cover, calling back with nullptr and a
  * set GError on failure.
  */
-class AsyncInitable : public Glib::Interface
+class GIOMM_API AsyncInitable : public Glib::Interface
 {
-  _CLASS_INTERFACE(AsyncInitable, GAsyncInitable, G_ASYNC_INITABLE, GAsyncInitableIface)
+  _CLASS_INTERFACE(AsyncInitable, GAsyncInitable, G_ASYNC_INITABLE, GAsyncInitableIface, , , GIOMM_API)
 
 protected:
   /** Starts asynchronous initialization of the object implementing the
diff --git a/gio/src/asyncresult.hg b/gio/src/asyncresult.hg
index 7472dc6f..e31aa289 100644
--- a/gio/src/asyncresult.hg
+++ b/gio/src/asyncresult.hg
@@ -29,7 +29,7 @@ typedef struct _GAsyncResultIface GAsyncResultIface;
 namespace Gio
 {
 
-class AsyncResult;
+class GIOMM_API AsyncResult;
 
 /** A function that will be called when an asynchronous operation within GIO has been completed.
  * @param result The asynchronous function's results.
@@ -109,9 +109,9 @@ using SlotAsyncReady = sigc::slot<void, Glib::RefPtr<AsyncResult>&>;
  *
  * @newin{2,16}
  */
-class AsyncResult : public Glib::Interface
+class GIOMM_API AsyncResult : public Glib::Interface
 {
-  _CLASS_INTERFACE(AsyncResult, GAsyncResult, G_ASYNC_RESULT, GAsyncResultIface)
+  _CLASS_INTERFACE(AsyncResult, GAsyncResult, G_ASYNC_RESULT, GAsyncResultIface, , , GIOMM_API)
 
 public:
   _IGNORE(g_async_result_get_user_data)
diff --git a/gio/src/bufferedinputstream.hg b/gio/src/bufferedinputstream.hg
index c50ecc81..4e5ecb21 100644
--- a/gio/src/bufferedinputstream.hg
+++ b/gio/src/bufferedinputstream.hg
@@ -39,9 +39,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class BufferedInputStream : public Gio::FilterInputStream
+class GIOMM_API BufferedInputStream : public Gio::FilterInputStream
 {
-  _CLASS_GOBJECT(BufferedInputStream, GBufferedInputStream, G_BUFFERED_INPUT_STREAM, Gio::FilterInputStream, 
GFilterInputStream)
+  _CLASS_GOBJECT(BufferedInputStream, GBufferedInputStream, G_BUFFERED_INPUT_STREAM, Gio::FilterInputStream, 
GFilterInputStream, , , GIOMM_API)
 protected:
   _WRAP_CTOR(BufferedInputStream(const Glib::RefPtr<InputStream>& base_stream), g_buffered_input_stream_new)
 
diff --git a/gio/src/bufferedoutputstream.hg b/gio/src/bufferedoutputstream.hg
index 0d2aba2d..0d076709 100644
--- a/gio/src/bufferedoutputstream.hg
+++ b/gio/src/bufferedoutputstream.hg
@@ -37,9 +37,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class BufferedOutputStream : public Gio::FilterOutputStream
+class GIOMM_API BufferedOutputStream : public Gio::FilterOutputStream
 {
-  _CLASS_GOBJECT(BufferedOutputStream, GBufferedOutputStream, G_BUFFERED_OUTPUT_STREAM, 
Gio::FilterOutputStream, GFilterOutputStream)
+  _CLASS_GOBJECT(BufferedOutputStream, GBufferedOutputStream, G_BUFFERED_OUTPUT_STREAM, 
Gio::FilterOutputStream, GFilterOutputStream, , , GIOMM_API)
 protected:
   _WRAP_CTOR(BufferedOutputStream(const Glib::RefPtr<OutputStream>& base_stream), 
g_buffered_output_stream_new)
 
diff --git a/gio/src/cancellable.hg b/gio/src/cancellable.hg
index 94b97ac1..85976e3b 100644
--- a/gio/src/cancellable.hg
+++ b/gio/src/cancellable.hg
@@ -14,6 +14,7 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
 
 #include <glibmm/object.h>
 
@@ -28,9 +29,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class Cancellable : public Glib::Object
+class GIOMM_API Cancellable : public Glib::Object
 {
-  _CLASS_GOBJECT(Cancellable, GCancellable, G_CANCELLABLE, Glib::Object, GObject)
+  _CLASS_GOBJECT(Cancellable, GCancellable, G_CANCELLABLE, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/charsetconverter.hg b/gio/src/charsetconverter.hg
index b5bb2343..fb7ee550 100644
--- a/gio/src/charsetconverter.hg
+++ b/gio/src/charsetconverter.hg
@@ -27,9 +27,9 @@ namespace Gio
  * CharsetConverter is an implementation of Converter based on GIConv.
  * @newin{2,34}
  */
-class CharsetConverter : public Glib::Object, public Converter
+class GIOMM_API CharsetConverter : public Glib::Object, public Converter
 {
-  _CLASS_GOBJECT(CharsetConverter, GCharsetConverter, G_CHARSET_CONVERTER, Glib::Object, GObject)
+  _CLASS_GOBJECT(CharsetConverter, GCharsetConverter, G_CHARSET_CONVERTER, Glib::Object, GObject, , , 
GIOMM_API)
   _IMPLEMENTS_INTERFACE(Converter)
 
 protected:
diff --git a/gio/src/converter.hg b/gio/src/converter.hg
index 2c219ad4..ce0691c2 100644
--- a/gio/src/converter.hg
+++ b/gio/src/converter.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -39,9 +41,9 @@ _WRAP_ENUM(ConverterFlags, GConverterFlags)
  *
  * @newin{2,34}
  */
-class Converter : public Glib::Interface
+class GIOMM_API Converter : public Glib::Interface
 {
-  _CLASS_INTERFACE(Converter, GConverter, G_CONVERTER, GConverterIface)
+  _CLASS_INTERFACE(Converter, GConverter, G_CONVERTER, GConverterIface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(ConverterResult convert(const void* inbuf, gsize inbuf_size, void* outbuf, gsize outbuf_size, 
ConverterFlags flags, gsize& bytes_read, gsize& bytes_written), g_converter_convert, errthrow)
diff --git a/gio/src/converterinputstream.hg b/gio/src/converterinputstream.hg
index ae65e597..9f221d65 100644
--- a/gio/src/converterinputstream.hg
+++ b/gio/src/converterinputstream.hg
@@ -23,8 +23,8 @@ _PINCLUDE(giomm/private/filterinputstream_p.h)
 namespace Gio
 {
 
-class Converter;
-class InputStream;
+class GIOMM_API Converter;
+class GIOMM_API InputStream;
 
 /** ConverterInputstream - Converter Input Stream.
  * Converter input stream implements InputStream and allows conversion of data
@@ -32,10 +32,10 @@ class InputStream;
  * PollableInputStream interface.
  * @newin{2,34}
  */
-class ConverterInputStream : public FilterInputStream,
-                             public PollableInputStream
+class GIOMM_API ConverterInputStream : public FilterInputStream,
+                                       public PollableInputStream
 {
-  _CLASS_GOBJECT(ConverterInputStream, GConverterInputStream, G_CONVERTER_INPUT_STREAM, FilterInputStream, 
GFilterInputStream)
+  _CLASS_GOBJECT(ConverterInputStream, GConverterInputStream, G_CONVERTER_INPUT_STREAM, FilterInputStream, 
GFilterInputStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(PollableInputStream)
 
 protected:
diff --git a/gio/src/converteroutputstream.hg b/gio/src/converteroutputstream.hg
index 1729aacb..76348985 100644
--- a/gio/src/converteroutputstream.hg
+++ b/gio/src/converteroutputstream.hg
@@ -23,8 +23,8 @@ _PINCLUDE(giomm/private/filteroutputstream_p.h)
 namespace Gio
 {
 
-class Converter;
-class OutputStream;
+class GIOMM_API Converter;
+class GIOMM_API OutputStream;
 
 /** ConverterOutputstream - Converter Output Stream.
  * Converter output stream implements OutputStream and allows conversion of
@@ -32,10 +32,10 @@ class OutputStream;
  * the PollableOutputStream interface.
  * @newin{2,34}
  */
-class ConverterOutputStream : public FilterOutputStream,
-                              public PollableOutputStream
+class GIOMM_API ConverterOutputStream : public FilterOutputStream,
+                                        public PollableOutputStream
 {
-  _CLASS_GOBJECT(ConverterOutputStream, GConverterOutputStream, G_CONVERTER_OUTPUT_STREAM, 
FilterOutputStream, GFilterOutputStream)
+  _CLASS_GOBJECT(ConverterOutputStream, GConverterOutputStream, G_CONVERTER_OUTPUT_STREAM, 
FilterOutputStream, GFilterOutputStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(PollableOutputStream)
 
 protected:
diff --git a/gio/src/credentials.hg b/gio/src/credentials.hg
index 31d50cd7..66c6cca7 100644
--- a/gio/src/credentials.hg
+++ b/gio/src/credentials.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -46,9 +48,9 @@ _WRAP_ENUM(CredentialsType, GCredentialsType, NO_GTYPE)
  *
  * @newin{2,28}
  */
-class Credentials : public Glib::Object
+class GIOMM_API Credentials : public Glib::Object
 {
-  _CLASS_GOBJECT(Credentials, GCredentials, G_CREDENTIALS, Glib::Object, GObject)
+  _CLASS_GOBJECT(Credentials, GCredentials, G_CREDENTIALS, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/datainputstream.hg b/gio/src/datainputstream.hg
index bac690da..27cc6846 100644
--- a/gio/src/datainputstream.hg
+++ b/gio/src/datainputstream.hg
@@ -31,9 +31,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class DataInputStream : public Gio::BufferedInputStream
+class GIOMM_API DataInputStream : public Gio::BufferedInputStream
 {
-  _CLASS_GOBJECT(DataInputStream, GDataInputStream, G_DATA_INPUT_STREAM, Gio::BufferedInputStream, 
GBufferedInputStream)
+  _CLASS_GOBJECT(DataInputStream, GDataInputStream, G_DATA_INPUT_STREAM, Gio::BufferedInputStream, 
GBufferedInputStream, , , GIOMM_API)
 
 protected:
   _WRAP_CTOR(DataInputStream(const Glib::RefPtr<InputStream>& base_stream), g_data_input_stream_new)
diff --git a/gio/src/dataoutputstream.hg b/gio/src/dataoutputstream.hg
index a74dd46c..749bc34b 100644
--- a/gio/src/dataoutputstream.hg
+++ b/gio/src/dataoutputstream.hg
@@ -31,9 +31,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class DataOutputStream : public Gio::BufferedOutputStream
+class GIOMM_API DataOutputStream : public Gio::BufferedOutputStream
 {
-  _CLASS_GOBJECT(DataOutputStream, GDataOutputStream, G_DATA_OUTPUT_STREAM, Gio::BufferedOutputStream, 
GBufferedOutputStream)
+  _CLASS_GOBJECT(DataOutputStream, GDataOutputStream, G_DATA_OUTPUT_STREAM, Gio::BufferedOutputStream, 
GBufferedOutputStream, , , GIOMM_API)
 
 protected:
   _WRAP_CTOR(DataOutputStream(const Glib::RefPtr<OutputStream>& base_stream), g_data_output_stream_new)
diff --git a/gio/src/dbusactiongroup.hg b/gio/src/dbusactiongroup.hg
index aafd8e2d..ae9bb6fd 100644
--- a/gio/src/dbusactiongroup.hg
+++ b/gio/src/dbusactiongroup.hg
@@ -27,7 +27,7 @@ namespace Gio
 namespace DBus
 {
 
-class Connection;
+class GIOMM_API Connection;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -37,10 +37,10 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * Gio::DBus::Connection::export_action_group().
  * @newin{2,32}
  */
-class ActionGroup
+class GIOMM_API ActionGroup
 : public Glib::Object, public ::Gio::ActionGroup, public RemoteActionGroup
 {
-  _CLASS_GOBJECT(ActionGroup, GDBusActionGroup, G_DBUS_ACTION_GROUP, Glib::Object, GObject)
+  _CLASS_GOBJECT(ActionGroup, GDBusActionGroup, G_DBUS_ACTION_GROUP, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(::Gio::ActionGroup)
   _IMPLEMENTS_INTERFACE(RemoteActionGroup)
 
diff --git a/gio/src/dbusaddress.hg b/gio/src/dbusaddress.hg
index aa105e70..7993892b 100644
--- a/gio/src/dbusaddress.hg
+++ b/gio/src/dbusaddress.hg
@@ -38,6 +38,7 @@ namespace Address
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_address(const std::string& string);
 
 /** Like is_address() but also checks if the library supports the transports
@@ -50,6 +51,7 @@ bool is_address(const std::string& string);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_supported(const std::string& address);
 
 /** Asynchronously connects to an endpoint specified by @a address and sets up
@@ -68,10 +70,12 @@ bool is_supported(const std::string& address);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 void get_stream(const std::string& address, const SlotAsyncReady slot,
   const Glib::RefPtr<Cancellable>& cancellable);
 
 /// A non-cancellable version of get_stream().
+GIOMM_API
 void get_stream(const std::string& address, const SlotAsyncReady slot);
 
 /** Finishes an operation started with get_stream().
@@ -85,6 +89,7 @@ void get_stream(const std::string& address, const SlotAsyncReady slot);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_finish(const Glib::RefPtr<AsyncResult>& res,
   std::string& out_guid);
 
@@ -97,6 +102,7 @@ Glib::RefPtr<IOStream> get_stream_finish(const Glib::RefPtr<AsyncResult>& res,
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_finish(const Glib::RefPtr<AsyncResult>& res);
 
 /** Synchronously connects to an endpoint specified by @a address and sets up
@@ -115,10 +121,12 @@ Glib::RefPtr<IOStream> get_stream_finish(const Glib::RefPtr<AsyncResult>& res);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_sync(const std::string& address,
   const Glib::RefPtr<Cancellable>& cancellable, std::string& out_guid);
 
 /// A non-cancellable version of get_stream_sync().
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_sync(const std::string& address,
   std::string& out_guid);
 
@@ -136,10 +144,12 @@ Glib::RefPtr<IOStream> get_stream_sync(const std::string& address,
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_sync(const std::string& address,
   const Glib::RefPtr<Cancellable>& cancellable);
 
 /// A non-cancellable version of get_stream_sync().
+GIOMM_API
 Glib::RefPtr<IOStream> get_stream_sync(const std::string& address);
 
 /** Synchronously looks up the D-Bus address for the well-known message bus
@@ -153,10 +163,12 @@ Glib::RefPtr<IOStream> get_stream_sync(const std::string& address);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 std::string get_for_bus_sync(BusType bus_type,
   const Glib::RefPtr<Cancellable>& cancellable);
 
 /// A non-cancellable get_for_bus_sync().
+GIOMM_API
 std::string get_for_bus_sync(BusType bus_type);
 
 } // namespace Address
diff --git a/gio/src/dbusauthobserver.hg b/gio/src/dbusauthobserver.hg
index 03876c0e..df2536e9 100644
--- a/gio/src/dbusauthobserver.hg
+++ b/gio/src/dbusauthobserver.hg
@@ -66,9 +66,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,28}
  * @ingroup DBus
  */
-class AuthObserver : public Glib::Object
+class GIOMM_API AuthObserver : public Glib::Object
 {
-  _CLASS_GOBJECT(AuthObserver, GDBusAuthObserver, G_DBUS_AUTH_OBSERVER, Glib::Object, GObject)
+  _CLASS_GOBJECT(AuthObserver, GDBusAuthObserver, G_DBUS_AUTH_OBSERVER, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/dbusconnection.hg b/gio/src/dbusconnection.hg
index 0986f934..1cc7a376 100644
--- a/gio/src/dbusconnection.hg
+++ b/gio/src/dbusconnection.hg
@@ -33,9 +33,9 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class ActionGroup;
-class MenuModel;
-class UnixFDList;
+class GIOMM_API ActionGroup;
+class GIOMM_API MenuModel;
+class GIOMM_API UnixFDList;
 
 
 namespace DBus
@@ -71,11 +71,11 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,28}
  * @ingroup DBus
  */
-class Connection
+class GIOMM_API Connection
 : public Glib::Object, public Initable, public AsyncInitable
 {
 protected:
-  _CLASS_GOBJECT(Connection, GDBusConnection, G_DBUS_CONNECTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(Connection, GDBusConnection, G_DBUS_CONNECTION, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Initable)
   _IMPLEMENTS_INTERFACE(AsyncInitable)
   _CUSTOM_WRAP_FUNCTION
diff --git a/gio/src/dbuserror.hg b/gio/src/dbuserror.hg
index 95bfe598..2489256c 100644
--- a/gio/src/dbuserror.hg
+++ b/gio/src/dbuserror.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/error.h>
 
 _DEFS(giomm,gio)
@@ -27,7 +29,7 @@ namespace DBus
 //The GMMPROC_EXTRA_NAMESPACE() macro is a hint to generate_wrap_init.pl to put it in the DBus sub-namespace
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
-_WRAP_GERROR(Error, GDBusError, G_DBUS_ERROR, NO_GTYPE)
+_WRAP_GERROR(Error, GDBusError, G_DBUS_ERROR, NO_GTYPE, decl_prefix GIOMM_API)
 
 } //namespace DBus
 
diff --git a/gio/src/dbuserrorutils.hg b/gio/src/dbuserrorutils.hg
index 084fa0c4..47982c03 100644
--- a/gio/src/dbuserrorutils.hg
+++ b/gio/src/dbuserrorutils.hg
@@ -14,12 +14,14 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 _DEFS(giomm,gio)
 
 namespace Glib
 {
 
-class Error;
+class GLIBMM_API Error;
 
 }
 
@@ -41,6 +43,7 @@ namespace ErrorUtils
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_remote_error(const Glib::Error& error);
 
 /** Gets the D-Bus error name used for @a error, if any.
@@ -56,6 +59,7 @@ bool is_remote_error(const Glib::Error& error);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 Glib::ustring get_remote_error(const Glib::Error& error);
 
 /** Looks for extra information in the error message used to recover the D-Bus
@@ -70,6 +74,7 @@ Glib::ustring get_remote_error(const Glib::Error& error);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool strip_remote_error(Glib::Error& error);
 
 } // namespace ErrorUtils
diff --git a/gio/src/dbusinterface.hg b/gio/src/dbusinterface.hg
index 8725f38d..6b3a9801 100644
--- a/gio/src/dbusinterface.hg
+++ b/gio/src/dbusinterface.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -30,8 +32,8 @@ namespace Gio
 namespace DBus
 {
 
-class InterfaceInfo;
-class Object;
+class GIOMM_API InterfaceInfo;
+class GIOMM_API Object;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -43,9 +45,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,34}
  */
 
-class Interface : public Glib::Interface
+class GIOMM_API Interface : public Glib::Interface
 {
-  _CLASS_INTERFACE(Interface, GDBusInterface, G_DBUS_INTERFACE, GDBusInterfaceIface)
+  _CLASS_INTERFACE(Interface, GDBusInterface, G_DBUS_INTERFACE, GDBusInterfaceIface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::RefPtr<InterfaceInfo> get_info(), g_dbus_interface_get_info)
diff --git a/gio/src/dbusinterfaceskeleton.hg b/gio/src/dbusinterfaceskeleton.hg
index 2261216a..287c363d 100644
--- a/gio/src/dbusinterfaceskeleton.hg
+++ b/gio/src/dbusinterfaceskeleton.hg
@@ -29,20 +29,20 @@ namespace DBus
 
 _WRAP_ENUM(InterfaceSkeletonFlags, GDBusInterfaceSkeletonFlags, gtype_func 
g_dbus_interface_skeleton_flags_get_type)
 
-class InterfaceInfo;
-class Connection;
-class MethodInvocation;
+class GIOMM_API InterfaceInfo;
+class GIOMM_API Connection;
+class GIOMM_API MethodInvocation;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
 /** Abstract base class for D-Bus interfaces on the service side.
  * @newin{2,38}
  */
-class InterfaceSkeleton
+class GIOMM_API InterfaceSkeleton
 : public Glib::Object,
   public Interface
 {
-  _CLASS_GOBJECT(InterfaceSkeleton, GDBusInterfaceSkeleton, G_DBUS_INTERFACE_SKELETON, Glib::Object, GObject)
+  _CLASS_GOBJECT(InterfaceSkeleton, GDBusInterfaceSkeleton, G_DBUS_INTERFACE_SKELETON, Glib::Object, 
GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Interface)
 
 public:
diff --git a/gio/src/dbusinterfacevtable.hg b/gio/src/dbusinterfacevtable.hg
index 287c2c48..4430895d 100644
--- a/gio/src/dbusinterfacevtable.hg
+++ b/gio/src/dbusinterfacevtable.hg
@@ -44,7 +44,7 @@ namespace DBus
  * @newin{2,28}
  * @ingroup DBus
  */
-class InterfaceVTable
+class GIOMM_API InterfaceVTable
 {
   _CLASS_GENERIC(InterfaceVTable, GDBusInterfaceVTable)
 
diff --git a/gio/src/dbusintrospection.hg b/gio/src/dbusintrospection.hg
index 0ec349c8..51869965 100644
--- a/gio/src/dbusintrospection.hg
+++ b/gio/src/dbusintrospection.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <gio/gio.h>
 #include <glibmm/arrayhandle.h>
 
@@ -33,9 +35,9 @@ _WRAP_ENUM(PropertyInfoFlags, GDBusPropertyInfoFlags, s#^DBUS_##, NO_GTYPE)
  * @newin{2,28}
  * @ingroup DBus
  */
-class AnnotationInfo final
+class GIOMM_API AnnotationInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(AnnotationInfo, GDBusAnnotationInfo, NONE, g_dbus_annotation_info_ref, 
g_dbus_annotation_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(AnnotationInfo, GDBusAnnotationInfo, NONE, g_dbus_annotation_info_ref, 
g_dbus_annotation_info_unref, GIOMM_API)
   _IGNORE(g_dbus_annotation_info_ref, g_dbus_annotation_info_unref)
 
 public:
@@ -49,9 +51,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class ArgInfo final
+class GIOMM_API ArgInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(ArgInfo, GDBusArgInfo, NONE, g_dbus_arg_info_ref, g_dbus_arg_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(ArgInfo, GDBusArgInfo, NONE, g_dbus_arg_info_ref, g_dbus_arg_info_unref, 
GIOMM_API)
   _IGNORE(g_dbus_arg_info_ref, g_dbus_arg_info_unref)
 
 public:
@@ -62,9 +64,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class MethodInfo final
+class GIOMM_API MethodInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(MethodInfo, GDBusMethodInfo, NONE, g_dbus_method_info_ref, 
g_dbus_method_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(MethodInfo, GDBusMethodInfo, NONE, g_dbus_method_info_ref, 
g_dbus_method_info_unref, GIOMM_API)
   _IGNORE(g_dbus_method_info_ref, g_dbus_method_info_unref)
 
 public:
@@ -75,9 +77,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class SignalInfo final
+class GIOMM_API SignalInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(SignalInfo, GDBusSignalInfo, NONE, g_dbus_signal_info_ref, 
g_dbus_signal_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(SignalInfo, GDBusSignalInfo, NONE, g_dbus_signal_info_ref, 
g_dbus_signal_info_unref, GIOMM_API)
   _IGNORE(g_dbus_signal_info_ref, g_dbus_signal_info_unref)
 
 public:
@@ -88,9 +90,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class PropertyInfo final
+class GIOMM_API PropertyInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(PropertyInfo, GDBusPropertyInfo, NONE, g_dbus_property_info_ref, 
g_dbus_property_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(PropertyInfo, GDBusPropertyInfo, NONE, g_dbus_property_info_ref, 
g_dbus_property_info_unref, GIOMM_API)
   _IGNORE(g_dbus_property_info_ref, g_dbus_property_info_unref)
 
 public:
@@ -101,9 +103,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class InterfaceInfo final
+class GIOMM_API InterfaceInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(InterfaceInfo, GDBusInterfaceInfo, NONE, g_dbus_interface_info_ref, 
g_dbus_interface_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(InterfaceInfo, GDBusInterfaceInfo, NONE, g_dbus_interface_info_ref, 
g_dbus_interface_info_unref, GIOMM_API)
   _IS_REFCOUNTED_BOXEDTYPE(g_dbus_interface_info_get_type)
   _IGNORE(g_dbus_interface_info_ref, g_dbus_interface_info_unref)
 
@@ -129,9 +131,9 @@ public:
  * @newin{2,28}
  * @ingroup DBus
  */
-class NodeInfo final
+class GIOMM_API NodeInfo final
 {
-  _CLASS_OPAQUE_REFCOUNTED(NodeInfo, GDBusNodeInfo, NONE, g_dbus_node_info_ref, g_dbus_node_info_unref)
+  _CLASS_OPAQUE_REFCOUNTED(NodeInfo, GDBusNodeInfo, NONE, g_dbus_node_info_ref, g_dbus_node_info_unref, 
GIOMM_API)
   _IGNORE(g_dbus_node_info_ref, g_dbus_node_info_unref)
 
 public:
diff --git a/gio/src/dbusmenumodel.hg b/gio/src/dbusmenumodel.hg
index f704350f..1f24ad6d 100644
--- a/gio/src/dbusmenumodel.hg
+++ b/gio/src/dbusmenumodel.hg
@@ -25,7 +25,7 @@ namespace Gio
 namespace DBus
 {
 
-class Connection;
+class GIOMM_API Connection;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -35,9 +35,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * Gio::DBus::Connection::export_menu_model().
  * @newin{2,32}
  */
-class MenuModel : public ::Gio::MenuModel
+class GIOMM_API MenuModel : public ::Gio::MenuModel
 {
-  _CLASS_GOBJECT(MenuModel, GDBusMenuModel, G_DBUS_MENU_MODEL, ::Gio::MenuModel, GMenuModel)
+  _CLASS_GOBJECT(MenuModel, GDBusMenuModel, G_DBUS_MENU_MODEL, ::Gio::MenuModel, GMenuModel, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/dbusmessage.hg b/gio/src/dbusmessage.hg
index da0a382a..7fb609f7 100644
--- a/gio/src/dbusmessage.hg
+++ b/gio/src/dbusmessage.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/variant.h>
 #include <glibmm/utility.h>
@@ -44,9 +46,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,28}
  * @ingroup DBus
  */
-class Message : public Glib::Object
+class GIOMM_API Message : public Glib::Object
 {
-  _CLASS_GOBJECT(Message, GDBusMessage, G_DBUS_MESSAGE, Glib::Object, GObject)
+  _CLASS_GOBJECT(Message, GDBusMessage, G_DBUS_MESSAGE, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/dbusmethodinvocation.hg b/gio/src/dbusmethodinvocation.hg
index 65e81c02..90fd7769 100644
--- a/gio/src/dbusmethodinvocation.hg
+++ b/gio/src/dbusmethodinvocation.hg
@@ -26,7 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Glib
 {
 
-class Error;
+class GLIBMM_API Error;
 
 }
 
@@ -36,7 +36,7 @@ namespace Gio
 namespace DBus
 {
 
-class Connection;
+class GIOMM_API Connection;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -52,9 +52,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,28}
  * @ingroup DBus
  */
-class MethodInvocation : public Glib::Object
+class GIOMM_API MethodInvocation : public Glib::Object
 {
-  _CLASS_GOBJECT(MethodInvocation, GDBusMethodInvocation, G_DBUS_METHOD_INVOCATION, Glib::Object, GObject)
+  _CLASS_GOBJECT(MethodInvocation, GDBusMethodInvocation, G_DBUS_METHOD_INVOCATION, Glib::Object, GObject, , 
, GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_sender() const, g_dbus_method_invocation_get_sender)
diff --git a/gio/src/dbusobject.hg b/gio/src/dbusobject.hg
index 9618aa52..b2b8806a 100644
--- a/gio/src/dbusobject.hg
+++ b/gio/src/dbusobject.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -30,7 +32,7 @@ namespace Gio
 namespace DBus
 {
 
-class Interface;
+class GIOMM_API Interface;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -41,9 +43,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,34}
  */
 
-class Object : public Glib::Interface
+class GIOMM_API Object : public Glib::Interface
 {
-  _CLASS_INTERFACE(Object, GDBusObject, G_DBUS_OBJECT, GDBusObjectIface)
+  _CLASS_INTERFACE(Object, GDBusObject, G_DBUS_OBJECT, GDBusObjectIface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_object_path() const, g_dbus_object_get_object_path)
diff --git a/gio/src/dbusobjectmanager.hg b/gio/src/dbusobjectmanager.hg
index 00f60cab..61fa89dd 100644
--- a/gio/src/dbusobjectmanager.hg
+++ b/gio/src/dbusobjectmanager.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 #include <glibmm/ustring.h>
 #include <vector>
@@ -31,8 +33,8 @@ namespace Gio
 
 namespace DBus
 {
-class Interface;
-class Object;
+class GIOMM_API Interface;
+class GIOMM_API Object;
 
 _GMMPROC_EXTRA_NAMESPACE(DBus)
 
@@ -49,9 +51,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,62}
  * @ingroup DBus
  */
-class ObjectManager : public Glib::Interface
+class GIOMM_API ObjectManager : public Glib::Interface
 {
-  _CLASS_INTERFACE(ObjectManager, GDBusObjectManager, G_DBUS_OBJECT_MANAGER, GDBusObjectManagerIface)
+  _CLASS_INTERFACE(ObjectManager, GDBusObjectManager, G_DBUS_OBJECT_MANAGER, GDBusObjectManagerIface, , , 
GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::ustring get_object_path() const, g_dbus_object_manager_get_object_path)
diff --git a/gio/src/dbusobjectmanagerclient.hg b/gio/src/dbusobjectmanagerclient.hg
index 61e1e322..c05c742d 100644
--- a/gio/src/dbusobjectmanagerclient.hg
+++ b/gio/src/dbusobjectmanagerclient.hg
@@ -116,13 +116,13 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,62}
  * @ingroup DBus
  */
-class ObjectManagerClient
+class GIOMM_API ObjectManagerClient
 : public Glib::Object,
   public Initable,
   public AsyncInitable,
   public ObjectManager
 {
-  _CLASS_GOBJECT(ObjectManagerClient, GDBusObjectManagerClient, G_DBUS_OBJECT_MANAGER_CLIENT, Glib::Object, 
GObject)
+  _CLASS_GOBJECT(ObjectManagerClient, GDBusObjectManagerClient, G_DBUS_OBJECT_MANAGER_CLIENT, Glib::Object, 
GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Initable)
   _IMPLEMENTS_INTERFACE(AsyncInitable)
   _IMPLEMENTS_INTERFACE(DBus::ObjectManager)
diff --git a/gio/src/dbusobjectmanagerserver.hg b/gio/src/dbusobjectmanagerserver.hg
index 1497d4b7..03392e61 100644
--- a/gio/src/dbusobjectmanagerserver.hg
+++ b/gio/src/dbusobjectmanagerserver.hg
@@ -57,9 +57,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,62}
  * @ingroup DBus
  */
-class ObjectManagerServer : public Glib::Object, public ObjectManager
+class GIOMM_API ObjectManagerServer : public Glib::Object, public ObjectManager
 {
-  _CLASS_GOBJECT(ObjectManagerServer, GDBusObjectManagerServer, G_DBUS_OBJECT_MANAGER_SERVER, Glib::Object, 
GObject)
+  _CLASS_GOBJECT(ObjectManagerServer, GDBusObjectManagerServer, G_DBUS_OBJECT_MANAGER_SERVER, Glib::Object, 
GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(DBus::ObjectManager)
 
 protected:
diff --git a/gio/src/dbusobjectproxy.hg b/gio/src/dbusobjectproxy.hg
index 755b4fc9..fb1b0646 100644
--- a/gio/src/dbusobjectproxy.hg
+++ b/gio/src/dbusobjectproxy.hg
@@ -39,9 +39,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,62}
  * @ingroup DBus
  */
-class ObjectProxy : public Glib::Object, public Object
+class GIOMM_API ObjectProxy : public Glib::Object, public Object
 {
-  _CLASS_GOBJECT(ObjectProxy, GDBusObjectProxy, G_DBUS_OBJECT_PROXY, Glib::Object, GObject)
+  _CLASS_GOBJECT(ObjectProxy, GDBusObjectProxy, G_DBUS_OBJECT_PROXY, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(DBus::Object)
 
 protected:
diff --git a/gio/src/dbusobjectskeleton.hg b/gio/src/dbusobjectskeleton.hg
index 41197da9..1ca7c674 100644
--- a/gio/src/dbusobjectskeleton.hg
+++ b/gio/src/dbusobjectskeleton.hg
@@ -41,9 +41,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,62}
  * @ingroup DBus
  */
-class ObjectSkeleton : public Glib::Object, public Object
+class GIOMM_API ObjectSkeleton : public Glib::Object, public Object
 {
-  _CLASS_GOBJECT(ObjectSkeleton, GDBusObjectSkeleton, G_DBUS_OBJECT_SKELETON, Glib::Object, GObject)
+  _CLASS_GOBJECT(ObjectSkeleton, GDBusObjectSkeleton, G_DBUS_OBJECT_SKELETON, Glib::Object, GObject, , , 
GIOMM_API)
   _IMPLEMENTS_INTERFACE(DBus::Object)
 
 protected:
diff --git a/gio/src/dbusownname.hg b/gio/src/dbusownname.hg
index 5971bf26..2f476831 100644
--- a/gio/src/dbusownname.hg
+++ b/gio/src/dbusownname.hg
@@ -109,6 +109,7 @@ using SlotNameLost = sigc::slot<void, const Glib::RefPtr<Gio::DBus::Connection>&
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 guint own_name(
   BusType bus_type,
   const Glib::ustring& name,
@@ -122,6 +123,7 @@ _IGNORE(g_bus_own_name)
 /** Stops owning a name.
  * @param owner_id An identifier obtained from own_name().
  */
+GIOMM_API
 void unown_name(guint owner_id);
 _IGNORE(g_bus_unown_name)
 
diff --git a/gio/src/dbusproxy.hg b/gio/src/dbusproxy.hg
index 1c753f06..3a31a141 100644
--- a/gio/src/dbusproxy.hg
+++ b/gio/src/dbusproxy.hg
@@ -60,12 +60,12 @@ _WRAP_ENUM(ProxyFlags, GDBusProxyFlags, s#^DBUS_##, gtype_func g_dbus_proxy_flag
  * @newin{2,28}
  * @ingroup DBus
  */
-class Proxy
+class GIOMM_API Proxy
 : public Glib::Object,
   public Initable,
   public AsyncInitable
 {
-  _CLASS_GOBJECT(Proxy, GDBusProxy, G_DBUS_PROXY, Glib::Object, GObject)
+  _CLASS_GOBJECT(Proxy, GDBusProxy, G_DBUS_PROXY, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Initable)
   _IMPLEMENTS_INTERFACE(AsyncInitable)
 
diff --git a/gio/src/dbusserver.hg b/gio/src/dbusserver.hg
index 6f1bb986..f983350c 100644
--- a/gio/src/dbusserver.hg
+++ b/gio/src/dbusserver.hg
@@ -48,9 +48,9 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
  * @newin{2,28}
  * @ingroup DBus
  */
-class Server : public Glib::Object, public Initable
+class GIOMM_API Server : public Glib::Object, public Initable
 {
-  _CLASS_GOBJECT(Server, GDBusServer, G_DBUS_SERVER, Glib::Object, GObject)
+  _CLASS_GOBJECT(Server, GDBusServer, G_DBUS_SERVER, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Initable)
 
 protected:
diff --git a/gio/src/dbussubtreevtable.hg b/gio/src/dbussubtreevtable.hg
index 0fe4d53a..8dfbae3e 100644
--- a/gio/src/dbussubtreevtable.hg
+++ b/gio/src/dbussubtreevtable.hg
@@ -41,7 +41,7 @@ namespace DBus
  * @newin{2,28}
  * @ingroup DBus
  */
-class SubtreeVTable
+class GIOMM_API SubtreeVTable
 {
   _CLASS_GENERIC(SubtreeVTable, GDBusSubtreeVTable)
 
diff --git a/gio/src/dbusutils.hg b/gio/src/dbusutils.hg
index 85844dcd..68b0e139 100644
--- a/gio/src/dbusutils.hg
+++ b/gio/src/dbusutils.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 _DEFS(giomm,gio)
 
 namespace Gio
@@ -32,6 +34,7 @@ namespace DBus
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 std::string generate_guid();
 
 /** Checks if @a string is a D-Bus GUID.
@@ -44,6 +47,7 @@ std::string generate_guid();
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_guid(const std::string& string);
 
 /** Checks if @a string is a valid D-Bus bus name (either unique or
@@ -54,6 +58,7 @@ bool is_guid(const std::string& string);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_name(const Glib::ustring& string);
 
 /** Checks if @a string is a valid D-Bus unique bus name.
@@ -63,6 +68,7 @@ bool is_name(const Glib::ustring& string);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_unique_name(const Glib::ustring& string);
 
 /** Checks if @a string is a valid D-Bus member (e.g. signal or method) name.
@@ -72,6 +78,7 @@ bool is_unique_name(const Glib::ustring& string);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_member_name(const Glib::ustring& string);
 
 /** Checks if @a string is a valid D-Bus interface name.
@@ -81,6 +88,7 @@ bool is_member_name(const Glib::ustring& string);
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 bool is_interface_name(const Glib::ustring& string);
 
 }
diff --git a/gio/src/dbuswatchname.hg b/gio/src/dbuswatchname.hg
index bb8b6718..ce4a8174 100644
--- a/gio/src/dbuswatchname.hg
+++ b/gio/src/dbuswatchname.hg
@@ -83,6 +83,7 @@ using SlotNameVanished = sigc::slot<void, const Glib::RefPtr<Gio::DBus::Connecti
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 guint watch_name(
   BusType bus_type,
   const Glib::ustring& name,
@@ -106,6 +107,7 @@ _IGNORE(g_bus_watch_name)
  * @newin{2,28}
  * @ingroup DBus
  */
+GIOMM_API
 guint watch_name(
   const Glib::RefPtr<Connection>& connection,
   const Glib::ustring& name,
@@ -119,6 +121,7 @@ _IGNORE(g_bus_watch_name_on_connection)
  * @param watcher_id An identifier obtained from watch_name().
  * @ingroup DBus
  */
+GIOMM_API
 void unwatch_name(guint watcher_id);
 _IGNORE(g_bus_unwatch_name)
 
diff --git a/gio/src/desktopappinfo.hg b/gio/src/desktopappinfo.hg
index 5fb2024b..e561ce87 100644
--- a/gio/src/desktopappinfo.hg
+++ b/gio/src/desktopappinfo.hg
@@ -28,7 +28,7 @@ _GMMPROC_WRAP_CONDITIONALLY(if !defined(G_OS_WIN32) && !defined(GLIBMM_OS_COCOA)
 namespace Glib
 {
 
-class KeyFile;
+class GLIBMM_API KeyFile;
 
 }
 
@@ -40,11 +40,11 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class DesktopAppInfo
+class GIOMM_API DesktopAppInfo
 : public Glib::Object,
   public AppInfo
 {
-  _CLASS_GOBJECT(DesktopAppInfo, GDesktopAppInfo, G_DESKTOP_APP_INFO, Glib::Object, GObject)
+  _CLASS_GOBJECT(DesktopAppInfo, GDesktopAppInfo, G_DESKTOP_APP_INFO, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(AppInfo)
 
 public:
diff --git a/gio/src/drive.hg b/gio/src/drive.hg
index 4871a3a2..21d28563 100644
--- a/gio/src/drive.hg
+++ b/gio/src/drive.hg
@@ -46,9 +46,9 @@ _WRAP_ENUM(DriveStartStopType, GDriveStartStopType)
  *
  * @newin{2,16}
  */
-class Drive : public Glib::Interface
+class GIOMM_API Drive : public Glib::Interface
 {
-  _CLASS_INTERFACE(Drive, GDrive, G_DRIVE, GDriveIface)
+  _CLASS_INTERFACE(Drive, GDrive, G_DRIVE, GDriveIface, , , GIOMM_API)
 public:
 
   _WRAP_METHOD(Glib::ustring get_name() const, g_drive_get_name)
@@ -176,6 +176,7 @@ namespace Glib
 {
 
 //Pre-declare this so we can use it in TypeTrait:
+GIOMM_API
 Glib::RefPtr<Gio::Drive> wrap(GDrive* object, bool take_copy);
 
 namespace Container_Helpers
@@ -187,7 +188,7 @@ namespace Container_Helpers
  * would not return a wrapper for an interface.
  */
 template <>
-struct TypeTraits< Glib::RefPtr<Gio::Drive> >
+struct GIOMM_API TypeTraits< Glib::RefPtr<Gio::Drive> >
 {
   using CppType = Glib::RefPtr<Gio::Drive>;
   using CType = GDrive*;
diff --git a/gio/src/emblem.hg b/gio/src/emblem.hg
index fd4431e8..712d50cc 100644
--- a/gio/src/emblem.hg
+++ b/gio/src/emblem.hg
@@ -36,11 +36,11 @@ _WRAP_ENUM(EmblemOrigin, GEmblemOrigin, NO_GTYPE)
  *
  * @newin{2,20}
  */
-class Emblem
+class GIOMM_API Emblem
 : public Glib::Object,
   public Icon
 {
-  _CLASS_GOBJECT(Emblem, GEmblem, G_EMBLEM, Glib::Object, GObject)
+  _CLASS_GOBJECT(Emblem, GEmblem, G_EMBLEM, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Icon)
 
 protected:
diff --git a/gio/src/emblemedicon.hg b/gio/src/emblemedicon.hg
index 31d0c781..c8f1cf1f 100644
--- a/gio/src/emblemedicon.hg
+++ b/gio/src/emblemedicon.hg
@@ -35,11 +35,11 @@ namespace Gio
  *
  * @newin{2,20}
  */
-class EmblemedIcon
+class GIOMM_API EmblemedIcon
 : public Glib::Object,
   public Icon
 {
-  _CLASS_GOBJECT(EmblemedIcon, GEmblemedIcon, G_EMBLEMED_ICON, Glib::Object, GObject)
+  _CLASS_GOBJECT(EmblemedIcon, GEmblemedIcon, G_EMBLEMED_ICON, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Icon)
 
 protected:
diff --git a/gio/src/error.hg b/gio/src/error.hg
index 7df46d2f..a754e219 100644
--- a/gio/src/error.hg
+++ b/gio/src/error.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/error.h>
 #include <glibmm/interface.h>
 
@@ -38,9 +40,9 @@ namespace Gio
 
 /** Exception class for giomm errors.
  */
-_WRAP_GERROR(Error, GIOErrorEnum, G_IO_ERROR, NO_GTYPE)
-_WRAP_GERROR(ResolverError, GResolverError, G_RESOLVER_ERROR, NO_GTYPE)
-_WRAP_GERROR(TlsError, GTlsError, G_TLS_ERROR, NO_GTYPE, s#^EOF$#ENDOFFILE#)
+_WRAP_GERROR(Error, GIOErrorEnum, G_IO_ERROR, NO_GTYPE, decl_prefix GIOMM_API)
+_WRAP_GERROR(ResolverError, GResolverError, G_RESOLVER_ERROR, NO_GTYPE, decl_prefix GIOMM_API)
+_WRAP_GERROR(TlsError, GTlsError, G_TLS_ERROR, NO_GTYPE, s#^EOF$#ENDOFFILE#, decl_prefix GIOMM_API)
 
 } // namespace Gio
 
diff --git a/gio/src/file.hg b/gio/src/file.hg
index 7fb60af1..e49dee82 100644
--- a/gio/src/file.hg
+++ b/gio/src/file.hg
@@ -40,8 +40,8 @@ typedef struct _GFileIface GFileIface;
 namespace Gio
 {
 
-class Mount;
-class Volume;
+class GIOMM_API Mount;
+class GIOMM_API Volume;
 
 _WRAP_ENUM(FileQueryInfoFlags, GFileQueryInfoFlags, NO_GTYPE)
 _WRAP_ENUM(FileCreateFlags, GFileCreateFlags, NO_GTYPE)
@@ -74,9 +74,9 @@ _WRAP_ENUM(FileMeasureFlags, GFileMeasureFlags, NO_GTYPE)
  *
  * @newin{2,16}
  */
-class File : public Glib::Interface
+class GIOMM_API File : public Glib::Interface
 {
-  _CLASS_INTERFACE(File, GFile, G_FILE, GFileIface)
+  _CLASS_INTERFACE(File, GFile, G_FILE, GFileIface, , , GIOMM_API)
 
 public:
 
@@ -2441,6 +2441,7 @@ namespace Glib
 {
 
 //Pre-declare this so we can use it in TypeTrait:
+GIOMM_API
 Glib::RefPtr<Gio::File> wrap(GFile* object, bool take_copy);
 
 namespace Container_Helpers
@@ -2452,7 +2453,7 @@ namespace Container_Helpers
  * would not return a wrapper for an interface.
  */
 template <>
-struct TypeTraits< Glib::RefPtr<Gio::File> >
+struct GIOMM_API TypeTraits< Glib::RefPtr<Gio::File> >
 {
   using CppType = Glib::RefPtr<Gio::File>;
   using CType = GFile*;
diff --git a/gio/src/fileattributeinfo.hg b/gio/src/fileattributeinfo.hg
index 846c568b..4fd21f8b 100644
--- a/gio/src/fileattributeinfo.hg
+++ b/gio/src/fileattributeinfo.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <string>
 #include <gio/gio.h> //TODO: avoid this include
 #include <glibmm/object.h>
@@ -32,7 +34,7 @@ _WRAP_ENUM(FileAttributeStatus, GFileAttributeStatus)
  *
  * @newin{2,16}
  */
-class FileAttributeInfo
+class GIOMM_API FileAttributeInfo
 {
   _CLASS_GENERIC(FileAttributeInfo, GFileAttributeInfo)
 public:
diff --git a/gio/src/fileattributeinfolist.hg b/gio/src/fileattributeinfolist.hg
index 5578b5bc..32a9149a 100644
--- a/gio/src/fileattributeinfolist.hg
+++ b/gio/src/fileattributeinfolist.hg
@@ -44,12 +44,13 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FileAttributeInfoList final
+class GIOMM_API FileAttributeInfoList final
 {
   _CLASS_OPAQUE_REFCOUNTED(FileAttributeInfoList, GFileAttributeInfoList,
                            g_file_attribute_info_list_new,
                            g_file_attribute_info_list_ref,
-                           g_file_attribute_info_list_unref)
+                           g_file_attribute_info_list_unref,
+                           GIOMM_API)
   _IGNORE(g_file_attribute_info_list_new, g_file_attribute_info_list_ref, g_file_attribute_info_list_unref)
 public:
 
diff --git a/gio/src/fileenumerator.hg b/gio/src/fileenumerator.hg
index f6e05680..e432d0d5 100644
--- a/gio/src/fileenumerator.hg
+++ b/gio/src/fileenumerator.hg
@@ -29,7 +29,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class File;
+class GIOMM_API File;
 
 //TODO: Consider wrapping this like a std::iterator (or at least renaming it), though the asyncness probably 
makes that unsuitable.
 
@@ -46,9 +46,9 @@ class File;
  *
  * @newin{2,16}
  */
-class FileEnumerator : public Glib::Object
+class GIOMM_API FileEnumerator : public Glib::Object
 {
-  _CLASS_GOBJECT(FileEnumerator, GFileEnumerator, G_FILE_ENUMERATOR, Glib::Object, GObject)
+  _CLASS_GOBJECT(FileEnumerator, GFileEnumerator, G_FILE_ENUMERATOR, Glib::Object, GObject, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::RefPtr<FileInfo> next_file(const Glib::RefPtr<Cancellable>& cancellable{?}),
diff --git a/gio/src/fileicon.hg b/gio/src/fileicon.hg
index 24c39821..7406876a 100644
--- a/gio/src/fileicon.hg
+++ b/gio/src/fileicon.hg
@@ -31,12 +31,12 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FileIcon
+class GIOMM_API FileIcon
 : public Glib::Object,
   //Already derived by LoadableIcon: public Icon,
   public LoadableIcon
 {
-  _CLASS_GOBJECT(FileIcon, GFileIcon, G_FILE_ICON, Glib::Object, GObject)
+  _CLASS_GOBJECT(FileIcon, GFileIcon, G_FILE_ICON, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(LoadableIcon)
 
 protected:
diff --git a/gio/src/fileinfo.hg b/gio/src/fileinfo.hg
index 9fe4e10e..ae5be38d 100644
--- a/gio/src/fileinfo.hg
+++ b/gio/src/fileinfo.hg
@@ -44,10 +44,11 @@ const FileType FILE_TYPE_UNKNOWN = FILE_TYPE_NOT_KNOWN;
  *
  * @newin{2,16}
  */
-class FileAttributeMatcher final
+class GIOMM_API FileAttributeMatcher final
 {
   _CLASS_OPAQUE_REFCOUNTED(FileAttributeMatcher, GFileAttributeMatcher,
-                           NONE, g_file_attribute_matcher_ref, g_file_attribute_matcher_unref)
+                           NONE, g_file_attribute_matcher_ref, g_file_attribute_matcher_unref,
+                           GIOMM_API)
   _IGNORE(g_file_attribute_matcher_ref, g_file_attribute_matcher_unref)
 
 public:
@@ -79,9 +80,9 @@ public:
  *
  * FileAttributeMatcher allows for searching through a FileInfo for attributes.
  */
-class FileInfo : public Glib::Object
+class GIOMM_API FileInfo : public Glib::Object
 {
-  _CLASS_GOBJECT(FileInfo, GFileInfo, G_FILE_INFO, Glib::Object, GObject)
+  _CLASS_GOBJECT(FileInfo, GFileInfo, G_FILE_INFO, Glib::Object, GObject, , , GIOMM_API)
 
 public:
   _CTOR_DEFAULT()
diff --git a/gio/src/fileinputstream.hg b/gio/src/fileinputstream.hg
index 0159d8ce..23d9a706 100644
--- a/gio/src/fileinputstream.hg
+++ b/gio/src/fileinputstream.hg
@@ -36,11 +36,11 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FileInputStream
+class GIOMM_API FileInputStream
 : public Gio::InputStream,
   public Seekable
 {
-  _CLASS_GOBJECT(FileInputStream, GFileInputStream, G_FILE_INPUT_STREAM, Gio::InputStream, GInputStream)
+  _CLASS_GOBJECT(FileInputStream, GFileInputStream, G_FILE_INPUT_STREAM, Gio::InputStream, GInputStream, , , 
GIOMM_API)
   _IMPLEMENTS_INTERFACE(Seekable)
 
 public:
diff --git a/gio/src/fileiostream.hg b/gio/src/fileiostream.hg
index 80c2ea72..518e4b63 100644
--- a/gio/src/fileiostream.hg
+++ b/gio/src/fileiostream.hg
@@ -36,11 +36,11 @@ namespace Gio
  *
  * @newin{2,22}
  */
-class FileIOStream
+class GIOMM_API FileIOStream
 : public Gio::IOStream,
     public Gio::Seekable
 {
-  _CLASS_GOBJECT(FileIOStream, GFileIOStream, G_FILE_IO_STREAM, Gio::IOStream, GIOStream)
+  _CLASS_GOBJECT(FileIOStream, GFileIOStream, G_FILE_IO_STREAM, Gio::IOStream, GIOStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Seekable)
 
 public:
diff --git a/gio/src/filemonitor.hg b/gio/src/filemonitor.hg
index 2318595b..3bd46a3c 100644
--- a/gio/src/filemonitor.hg
+++ b/gio/src/filemonitor.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 //#include <giomm/file.h>
 #include <glibmm/object.h>
 
@@ -26,7 +28,7 @@ namespace Gio
 
 _WRAP_ENUM(FileMonitorEvent, GFileMonitorEvent, NO_GTYPE)
 
-class File;
+class GIOMM_API File;
 
 /** Monitors a file or directory for changes.
  * To obtain a FileMonitor for a file or directory, use File::monitor_file() or
@@ -37,9 +39,9 @@ class File;
  *
  * @newin{2,16}
  */
-class FileMonitor : public Glib::Object
+class GIOMM_API FileMonitor : public Glib::Object
 {
-  _CLASS_GOBJECT(FileMonitor, GFileMonitor, G_FILE_MONITOR, Glib::Object, GObject)
+  _CLASS_GOBJECT(FileMonitor, GFileMonitor, G_FILE_MONITOR, Glib::Object, GObject, , , GIOMM_API)
 protected:
 
 public:
diff --git a/gio/src/filenamecompleter.hg b/gio/src/filenamecompleter.hg
index 676d1967..b998b64f 100644
--- a/gio/src/filenamecompleter.hg
+++ b/gio/src/filenamecompleter.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 //#include <giomm/file.h>
 #include <glibmm/arrayhandle.h>
 #include <glibmm/object.h>
@@ -25,16 +27,16 @@ _PINCLUDE(gio/gio.h)
 namespace Gio
 {
 
-class File;
+class GIOMM_API File;
 
 /** Completes partial file and directory names given a partial string by looking in the file system for 
clues.
  * Can return a list of possible completion strings for widget implementation.
  *
  * @newin{2,16}
  */
-class FilenameCompleter : public Glib::Object
+class GIOMM_API FilenameCompleter : public Glib::Object
 {
-  _CLASS_GOBJECT(FilenameCompleter, GFilenameCompleter, G_FILENAME_COMPLETER, Glib::Object, GObject)
+  _CLASS_GOBJECT(FilenameCompleter, GFilenameCompleter, G_FILENAME_COMPLETER, Glib::Object, GObject, , , 
GIOMM_API)
 protected:
   _CTOR_DEFAULT
   _IGNORE(g_filename_completer_new)
diff --git a/gio/src/fileoutputstream.hg b/gio/src/fileoutputstream.hg
index dc82d8df..248908d5 100644
--- a/gio/src/fileoutputstream.hg
+++ b/gio/src/fileoutputstream.hg
@@ -39,11 +39,11 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FileOutputStream
+class GIOMM_API FileOutputStream
 : public OutputStream,
   public Seekable
 {
-  _CLASS_GOBJECT(FileOutputStream, GFileOutputStream, G_FILE_OUTPUT_STREAM, Gio::OutputStream, GOutputStream)
+  _CLASS_GOBJECT(FileOutputStream, GFileOutputStream, G_FILE_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Seekable)
 
 public:
diff --git a/gio/src/filterinputstream.hg b/gio/src/filterinputstream.hg
index 1549bd4e..92ad7f52 100644
--- a/gio/src/filterinputstream.hg
+++ b/gio/src/filterinputstream.hg
@@ -31,9 +31,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FilterInputStream : public Gio::InputStream
+class GIOMM_API FilterInputStream : public Gio::InputStream
 {
-  _CLASS_GOBJECT(FilterInputStream, GFilterInputStream, G_FILTER_INPUT_STREAM, Gio::InputStream, 
GInputStream)
+  _CLASS_GOBJECT(FilterInputStream, GFilterInputStream, G_FILTER_INPUT_STREAM, Gio::InputStream, 
GInputStream, , , GIOMM_API)
 
 protected:
   // This needs to be hand-coded because there is no public GFilterInputStream constructor.
diff --git a/gio/src/filteroutputstream.hg b/gio/src/filteroutputstream.hg
index 7a9f762b..67d59f51 100644
--- a/gio/src/filteroutputstream.hg
+++ b/gio/src/filteroutputstream.hg
@@ -32,9 +32,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FilterOutputStream : public Gio::OutputStream
+class GIOMM_API FilterOutputStream : public Gio::OutputStream
 {
-  _CLASS_GOBJECT(FilterOutputStream, GFilterOutputStream, G_FILTER_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream)
+  _CLASS_GOBJECT(FilterOutputStream, GFilterOutputStream, G_FILTER_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream, , , GIOMM_API)
 
 protected:
   // This needs to be hand-coded because there is no public GFilterOutputStream constructor.
diff --git a/gio/src/icon.hg b/gio/src/icon.hg
index ce9b07ae..9d3249be 100644
--- a/gio/src/icon.hg
+++ b/gio/src/icon.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 #include <glibmm/variant.h>
 
@@ -43,9 +45,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class Icon : public Glib::Interface
+class GIOMM_API Icon : public Glib::Interface
 {
-  _CLASS_INTERFACE(Icon, GIcon, G_ICON, GIconIface)
+  _CLASS_INTERFACE(Icon, GIcon, G_ICON, GIconIface, , , GIOMM_API)
 
 public:
   // We can't just use a _WRAP_CREATE macro here since this is an abstract
diff --git a/gio/src/inetaddress.hg b/gio/src/inetaddress.hg
index e4c0c0ae..7a3145d8 100644
--- a/gio/src/inetaddress.hg
+++ b/gio/src/inetaddress.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <giomm/enums.h>
 
@@ -37,10 +39,10 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class InetAddress
+class GIOMM_API InetAddress
 : public Glib::Object
 {
-  _CLASS_GOBJECT(InetAddress, GInetAddress, G_INET_ADDRESS, Glib::Object, GObject)
+  _CLASS_GOBJECT(InetAddress, GInetAddress, G_INET_ADDRESS, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
  _WRAP_CTOR(InetAddress(const guint8 *bytes, SocketFamily family), g_inet_address_new_from_bytes)
diff --git a/gio/src/inetsocketaddress.hg b/gio/src/inetsocketaddress.hg
index 59c9fca9..92204805 100644
--- a/gio/src/inetsocketaddress.hg
+++ b/gio/src/inetsocketaddress.hg
@@ -35,10 +35,10 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class InetSocketAddress
+class GIOMM_API InetSocketAddress
 : public SocketAddress
 {
-  _CLASS_GOBJECT(InetSocketAddress, GInetSocketAddress, G_INET_SOCKET_ADDRESS, SocketAddress, GSocketAddress)
+  _CLASS_GOBJECT(InetSocketAddress, GInetSocketAddress, G_INET_SOCKET_ADDRESS, SocketAddress, 
GSocketAddress, , , GIOMM_API)
 
 protected:
  _WRAP_CTOR(InetSocketAddress(const Glib::RefPtr<InetAddress>& address, guint16 port), 
g_inet_socket_address_new)
diff --git a/gio/src/initable.hg b/gio/src/initable.hg
index 27e9e1ba..2be91248 100644
--- a/gio/src/initable.hg
+++ b/gio/src/initable.hg
@@ -48,9 +48,9 @@ namespace Gio
  *
  * @newin{2,24}
  */
-class Initable : public Glib::Interface
+class GIOMM_API Initable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Initable, GInitable, G_INITABLE, GInitableIface)
+  _CLASS_INTERFACE(Initable, GInitable, G_INITABLE, GInitableIface, , , GIOMM_API)
 
 protected:
   _WRAP_METHOD(void init(const Glib::RefPtr<Cancellable>& cancellable{?}),
diff --git a/gio/src/inputstream.hg b/gio/src/inputstream.hg
index d1227101..5ed092b8 100644
--- a/gio/src/inputstream.hg
+++ b/gio/src/inputstream.hg
@@ -35,9 +35,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class InputStream : public Glib::Object
+class GIOMM_API InputStream : public Glib::Object
 {
-  _CLASS_GOBJECT(InputStream, GInputStream, G_INPUT_STREAM, Glib::Object, GObject)
+  _CLASS_GOBJECT(InputStream, GInputStream, G_INPUT_STREAM, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/iostream.hg b/gio/src/iostream.hg
index b53be022..5b93a968 100644
--- a/gio/src/iostream.hg
+++ b/gio/src/iostream.hg
@@ -60,9 +60,9 @@ _WRAP_ENUM(IOStreamSpliceFlags, GIOStreamSpliceFlags, NO_GTYPE)
  *
  * @newin{2,22}
  */
-class IOStream : public Glib::Object
+class GIOMM_API IOStream : public Glib::Object
 {
-  _CLASS_GOBJECT(IOStream, GIOStream, G_IO_STREAM, Glib::Object, GObject)
+  _CLASS_GOBJECT(IOStream, GIOStream, G_IO_STREAM, Glib::Object, GObject, , , GIOMM_API)
 
 public:
 
diff --git a/gio/src/listmodel.hg b/gio/src/listmodel.hg
index b7abfe96..3d1f31fe 100644
--- a/gio/src/listmodel.hg
+++ b/gio/src/listmodel.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 #include <gio/gio.h>
 
@@ -73,9 +75,9 @@ namespace Gio
  *
  * @newin{2,50}
  */
-class ListModel : public Glib::Interface
+class GIOMM_API ListModel : public Glib::Interface
 {
-  _CLASS_INTERFACE(ListModel, GListModel, G_LIST_MODEL, GListModelInterface)
+  _CLASS_INTERFACE(ListModel, GListModel, G_LIST_MODEL, GListModelInterface, , , GIOMM_API)
 
 protected:
   _WRAP_METHOD(void items_changed(guint position, guint removed, guint added), g_list_model_items_changed, 
newin "2,50")
diff --git a/gio/src/liststore.hg b/gio/src/liststore.hg
index 16b8cddf..844041da 100644
--- a/gio/src/liststore.hg
+++ b/gio/src/liststore.hg
@@ -34,11 +34,11 @@ namespace Gio
  *
  * @newin{2,50}
  */
-class ListStoreBase
+class GIOMM_API ListStoreBase
 : public Glib::Object,
   public ListModel
 {
-  _CLASS_GOBJECT(ListStoreBase, GListStore, G_LIST_STORE, Glib::Object, GObject)
+  _CLASS_GOBJECT(ListStoreBase, GListStore, G_LIST_STORE, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(ListModel)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gio/src/loadableicon.hg b/gio/src/loadableicon.hg
index 0d7a4852..88111277 100644
--- a/gio/src/loadableicon.hg
+++ b/gio/src/loadableicon.hg
@@ -32,9 +32,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class LoadableIcon : public Icon
+class GIOMM_API LoadableIcon : public Icon
 {
-  _CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)
+  _CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon, , , 
GIOMM_API)
 
 public:
 /**
diff --git a/gio/src/memoryinputstream.hg b/gio/src/memoryinputstream.hg
index 9fed8da4..d65956f8 100644
--- a/gio/src/memoryinputstream.hg
+++ b/gio/src/memoryinputstream.hg
@@ -31,11 +31,11 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class MemoryInputStream
+class GIOMM_API MemoryInputStream
 : public Gio::InputStream,
   public Seekable
 {
-  _CLASS_GOBJECT(MemoryInputStream, GMemoryInputStream, G_MEMORY_INPUT_STREAM, Gio::InputStream, 
GInputStream)
+  _CLASS_GOBJECT(MemoryInputStream, GMemoryInputStream, G_MEMORY_INPUT_STREAM, Gio::InputStream, 
GInputStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Seekable)
 
 protected:
diff --git a/gio/src/memoryoutputstream.hg b/gio/src/memoryoutputstream.hg
index 329329e1..4d4d15ed 100644
--- a/gio/src/memoryoutputstream.hg
+++ b/gio/src/memoryoutputstream.hg
@@ -27,7 +27,7 @@ namespace Glib
 {
 
 // Forward declaration.
-class Bytes;
+class GLIBMM_API Bytes;
 
 }
 
@@ -42,11 +42,11 @@ namespace Gio
  *
  * @newin{2,20}
  */
-class MemoryOutputStream :
+class GIOMM_API MemoryOutputStream :
     public OutputStream,
     public Seekable
 {
-  _CLASS_GOBJECT(MemoryOutputStream, GMemoryOutputStream, G_MEMORY_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream)
+  _CLASS_GOBJECT(MemoryOutputStream, GMemoryOutputStream, G_MEMORY_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Seekable)
 
 protected:
diff --git a/gio/src/menu.hg b/gio/src/menu.hg
index c5d3831a..29f92bff 100644
--- a/gio/src/menu.hg
+++ b/gio/src/menu.hg
@@ -34,9 +34,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class Menu : public Gio::MenuModel
+class GIOMM_API Menu : public Gio::MenuModel
 {
-  _CLASS_GOBJECT(Menu, GMenu, G_MENU, ::Gio::MenuModel, GMenuModel)
+  _CLASS_GOBJECT(Menu, GMenu, G_MENU, ::Gio::MenuModel, GMenuModel, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/menuattributeiter.hg b/gio/src/menuattributeiter.hg
index 16bfb3b7..10fcddc3 100644
--- a/gio/src/menuattributeiter.hg
+++ b/gio/src/menuattributeiter.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -25,9 +27,9 @@ namespace Gio
 /** MenuAttributeIter - A menu attribute iterator.
  * @newin{2,32}
  */
-class MenuAttributeIter : public Glib::Object
+class GIOMM_API MenuAttributeIter : public Glib::Object
 {
-  _CLASS_GOBJECT(MenuAttributeIter, GMenuAttributeIter, G_MENU_ATTRIBUTE_ITER, Glib::Object, GObject)
+  _CLASS_GOBJECT(MenuAttributeIter, GMenuAttributeIter, G_MENU_ATTRIBUTE_ITER, Glib::Object, GObject, , , 
GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/menuitem.hg b/gio/src/menuitem.hg
index 3215ec14..e6482f4b 100644
--- a/gio/src/menuitem.hg
+++ b/gio/src/menuitem.hg
@@ -30,9 +30,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class MenuItem : public Glib::Object
+class GIOMM_API MenuItem : public Glib::Object
 {
-  _CLASS_GOBJECT(MenuItem, GMenuItem, G_MENU_ITEM, Glib::Object, GObject)
+  _CLASS_GOBJECT(MenuItem, GMenuItem, G_MENU_ITEM, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   /** Creates a new MenuItem.
diff --git a/gio/src/menulinkiter.hg b/gio/src/menulinkiter.hg
index 8cba9dfc..10f6cada 100644
--- a/gio/src/menulinkiter.hg
+++ b/gio/src/menulinkiter.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -22,14 +24,14 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class MenuModel;
+class GIOMM_API MenuModel;
 
 /** MenuLinkIter - A menu link iterator.
  * @newin{2,32}
  */
-class MenuLinkIter : public Glib::Object
+class GIOMM_API MenuLinkIter : public Glib::Object
 {
-  _CLASS_GOBJECT(MenuLinkIter, GMenuLinkIter, G_MENU_LINK_ITER, Glib::Object, GObject)
+  _CLASS_GOBJECT(MenuLinkIter, GMenuLinkIter, G_MENU_LINK_ITER, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/menumodel.hg b/gio/src/menumodel.hg
index 36a5ea7e..0402ee7e 100644
--- a/gio/src/menumodel.hg
+++ b/gio/src/menumodel.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -43,8 +45,8 @@ enum MenuLink
   MENU_LINK_SUBMENU
 };
 
-class MenuAttributeIter;
-class MenuLinkIter;
+class GIOMM_API MenuAttributeIter;
+class GIOMM_API MenuLinkIter;
 
 /** MenuModel - An abstract class representing the contents of a menu.
  * MenuModel represents the contents of a menu -- an ordered list of menu
@@ -120,9 +122,9 @@ class MenuLinkIter;
  * See the C API docs for a graphical example.
  * @newin{2,32}
  */
-class MenuModel : public Glib::Object
+class GIOMM_API MenuModel : public Glib::Object
 {
-  _CLASS_GOBJECT(MenuModel, GMenuModel, G_MENU_MODEL, Glib::Object, GObject)
+  _CLASS_GOBJECT(MenuModel, GMenuModel, G_MENU_MODEL, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/mount.hg b/gio/src/mount.hg
index 6078d7d9..b3f00f27 100644
--- a/gio/src/mount.hg
+++ b/gio/src/mount.hg
@@ -37,9 +37,9 @@ namespace Gio
 _WRAP_ENUM(MountUnmountFlags, GMountUnmountFlags, NO_GTYPE)
 _WRAP_ENUM(MountMountFlags, GMountMountFlags, NO_GTYPE)
 
-class File;
-class Drive;
-class Volume;
+class GIOMM_API File;
+class GIOMM_API Drive;
+class GIOMM_API Volume;
 
 /** The Mount interface represents user-visible mounts.
  * Mount is a "mounted" filesystem that you can access. Mounted is in quotes because it's not the same as a 
unix mount:
@@ -53,9 +53,9 @@ class Volume;
  *
  * @newin{2,16}
  */
-class Mount : public Glib::Interface
+class GIOMM_API Mount : public Glib::Interface
 {
-  _CLASS_INTERFACE(Mount, GMount, G_MOUNT, GMountIface)
+  _CLASS_INTERFACE(Mount, GMount, G_MOUNT, GMountIface, , , GIOMM_API)
 
 public:
 
@@ -242,6 +242,7 @@ namespace Glib
 {
 
 //Pre-declare this so we can use it in TypeTrait:
+GIOMM_API
 Glib::RefPtr<Gio::Mount> wrap(GMount* object, bool take_copy);
 
 namespace Container_Helpers
@@ -253,7 +254,7 @@ namespace Container_Helpers
  * would not return a wrapper for an interface.
  */
 template <>
-struct TypeTraits< Glib::RefPtr<Gio::Mount> >
+struct GIOMM_API TypeTraits< Glib::RefPtr<Gio::Mount> >
 {
   using CppType = Glib::RefPtr<Gio::Mount>;
   using CType = GMount*;
diff --git a/gio/src/mountoperation.hg b/gio/src/mountoperation.hg
index 99492b3b..c45a4282 100644
--- a/gio/src/mountoperation.hg
+++ b/gio/src/mountoperation.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/arrayhandle.h>
 
@@ -40,9 +42,9 @@ _WRAP_ENUM(MountOperationResult, GMountOperationResult, NO_GTYPE)
  *
  * @newin{2,16}
  */
-class MountOperation : public Glib::Object
+class GIOMM_API MountOperation : public Glib::Object
 {
-  _CLASS_GOBJECT(MountOperation, GMountOperation, G_MOUNT_OPERATION, Glib::Object, GObject)
+  _CLASS_GOBJECT(MountOperation, GMountOperation, G_MOUNT_OPERATION, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/networkaddress.hg b/gio/src/networkaddress.hg
index ff5e123e..41bd61fd 100644
--- a/gio/src/networkaddress.hg
+++ b/gio/src/networkaddress.hg
@@ -32,10 +32,10 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class NetworkAddress : public Glib::Object,
+class GIOMM_API NetworkAddress : public Glib::Object,
     public SocketConnectable
 {
-  _CLASS_GOBJECT(NetworkAddress, GNetworkAddress, G_NETWORK_ADDRESS, Glib::Object, GObject)
+  _CLASS_GOBJECT(NetworkAddress, GNetworkAddress, G_NETWORK_ADDRESS, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(SocketConnectable)
 
   _WRAP_CTOR(NetworkAddress(const std::string& hostname, guint16 port), g_network_address_new)
diff --git a/gio/src/networkmonitor.hg b/gio/src/networkmonitor.hg
index 9c39588f..b376e47c 100644
--- a/gio/src/networkmonitor.hg
+++ b/gio/src/networkmonitor.hg
@@ -44,9 +44,9 @@ _WRAP_ENUM(NetworkConnectivity, GNetworkConnectivity)
  *
  * @newin{2,44}
  */
-class NetworkMonitor : public Glib::Interface
+class GIOMM_API NetworkMonitor : public Glib::Interface
 {
-  _CLASS_INTERFACE(NetworkMonitor, GNetworkMonitor, G_NETWORK_MONITOR, GNetworkMonitorInterface)
+  _CLASS_INTERFACE(NetworkMonitor, GNetworkMonitor, G_NETWORK_MONITOR, GNetworkMonitorInterface, , , 
GIOMM_API)
 
 public:
   _WRAP_METHOD(static Glib::RefPtr<NetworkMonitor> get_default(), g_network_monitor_get_default, newin 
"2,44")
diff --git a/gio/src/networkservice.hg b/gio/src/networkservice.hg
index 581fc788..47a07bb2 100644
--- a/gio/src/networkservice.hg
+++ b/gio/src/networkservice.hg
@@ -36,10 +36,10 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class NetworkService : public Glib::Object,
+class GIOMM_API NetworkService : public Glib::Object,
     public SocketConnectable
 {
-  _CLASS_GOBJECT(NetworkService, GNetworkService, G_NETWORK_SERVICE, Glib::Object, GObject)
+  _CLASS_GOBJECT(NetworkService, GNetworkService, G_NETWORK_SERVICE, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(SocketConnectable)
 
   _WRAP_CTOR(NetworkService(const Glib::ustring& service, const Glib::ustring& protocol, const 
Glib::ustring& domain), g_network_service_new)
diff --git a/gio/src/notification.hg b/gio/src/notification.hg
index df9a7ee3..8e65c90b 100644
--- a/gio/src/notification.hg
+++ b/gio/src/notification.hg
@@ -25,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gio
 {
-class Icon;
+class GIOMM_API Icon;
 
 _WRAP_ENUM(NotificationPriority, GNotificationPriority, newin "2,44")
 
@@ -55,9 +55,9 @@ _WRAP_ENUM(NotificationPriority, GNotificationPriority, newin "2,44")
  *
  * @newin{2,40}
  */
-class Notification : public Glib::Object
+class GIOMM_API Notification : public Glib::Object
 {
-  _CLASS_GOBJECT(Notification, GNotification, G_NOTIFICATION, Glib::Object, GObject)
+  _CLASS_GOBJECT(Notification, GNotification, G_NOTIFICATION, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   // Can't use _WRAP_CTOR. GNotification has no properties, but it must have a title.
diff --git a/gio/src/outputstream.hg b/gio/src/outputstream.hg
index 835a0a5e..d51d5492 100644
--- a/gio/src/outputstream.hg
+++ b/gio/src/outputstream.hg
@@ -34,9 +34,9 @@ _WRAP_ENUM(OutputStreamSpliceFlags, GOutputStreamSpliceFlags, NO_GTYPE)
  *
  * @newin{2,16}
  */
-class OutputStream : public Glib::Object
+class GIOMM_API OutputStream : public Glib::Object
 {
-  _CLASS_GOBJECT(OutputStream, GOutputStream, G_OUTPUT_STREAM, Glib::Object, GObject)
+  _CLASS_GOBJECT(OutputStream, GOutputStream, G_OUTPUT_STREAM, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/permission.hg b/gio/src/permission.hg
index d702b5be..b6b939da 100644
--- a/gio/src/permission.hg
+++ b/gio/src/permission.hg
@@ -45,9 +45,9 @@ namespace Gio
  *
  * @newin{2,42}
  */
-class Permission : public Glib::Object
+class GIOMM_API Permission : public Glib::Object
 {
-  _CLASS_GOBJECT(Permission, GPermission, G_PERMISSION, Glib::Object, GObject)
+  _CLASS_GOBJECT(Permission, GPermission, G_PERMISSION, Glib::Object, GObject, , , GIOMM_API)
 
 public:
 
diff --git a/gio/src/pollableinputstream.hg b/gio/src/pollableinputstream.hg
index 7dc7a45d..dd6e7f86 100644
--- a/gio/src/pollableinputstream.hg
+++ b/gio/src/pollableinputstream.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -27,7 +29,7 @@ typedef struct _GPollableInputStreamInterface GPollableInputStreamInterface;
 namespace Gio
 {
 
-class Cancellable;
+class GIOMM_API Cancellable;
 
 //TODO: Instead derive from InputStream, when we can break ABI,
 //because the GPollableInputStream interface requires the GInputStream interface.
@@ -39,9 +41,9 @@ class Cancellable;
  * expects UNIX-file-descriptor-style asynchronous I/O rather than GIO-style.
  * @newin{2,34}
  */
-class PollableInputStream : public Glib::Interface
+class GIOMM_API PollableInputStream : public Glib::Interface
 {
-  _CLASS_INTERFACE(PollableInputStream, GPollableInputStream, G_POLLABLE_INPUT_STREAM, 
GPollableInputStreamInterface)
+  _CLASS_INTERFACE(PollableInputStream, GPollableInputStream, G_POLLABLE_INPUT_STREAM, 
GPollableInputStreamInterface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(bool can_poll() const, g_pollable_input_stream_can_poll)
diff --git a/gio/src/pollableoutputstream.hg b/gio/src/pollableoutputstream.hg
index 88915c1b..523d6eea 100644
--- a/gio/src/pollableoutputstream.hg
+++ b/gio/src/pollableoutputstream.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -27,7 +29,7 @@ typedef struct _GPollableOutputStreamInterface GPollableOutputStreamInterface;
 namespace Gio
 {
 
-class Cancellable;
+class GIOMM_API Cancellable;
 
 //TODO: Instead derive from OutputStream, when we can break ABI,
 //because the GPollableOutputStream interface requires the GOutputStream interface.
@@ -40,9 +42,9 @@ class Cancellable;
  * GIO-style.
  * @newin{2,34}
  */
-class PollableOutputStream : public Glib::Interface
+class GIOMM_API PollableOutputStream : public Glib::Interface
 {
-  _CLASS_INTERFACE(PollableOutputStream, GPollableOutputStream, G_POLLABLE_OUTPUT_STREAM, 
GPollableOutputStreamInterface)
+  _CLASS_INTERFACE(PollableOutputStream, GPollableOutputStream, G_POLLABLE_OUTPUT_STREAM, 
GPollableOutputStreamInterface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(bool can_poll() const, g_pollable_output_stream_can_poll)
diff --git a/gio/src/proxy.hg b/gio/src/proxy.hg
index 4fb94d24..eac5139b 100644
--- a/gio/src/proxy.hg
+++ b/gio/src/proxy.hg
@@ -43,9 +43,9 @@ namespace Gio
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class Proxy : public Glib::Interface
+class GIOMM_API Proxy : public Glib::Interface
 {
-  _CLASS_INTERFACE(Proxy, GProxy, G_PROXY, GProxyInterface)
+  _CLASS_INTERFACE(Proxy, GProxy, G_PROXY, GProxyInterface, , , GIOMM_API)
 
 public:
 
diff --git a/gio/src/proxyaddress.hg b/gio/src/proxyaddress.hg
index 5d64bdd4..4df5b086 100644
--- a/gio/src/proxyaddress.hg
+++ b/gio/src/proxyaddress.hg
@@ -28,10 +28,10 @@ namespace Gio
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class ProxyAddress
+class GIOMM_API ProxyAddress
 : public InetSocketAddress
 {
-  _CLASS_GOBJECT(ProxyAddress, GProxyAddress, G_PROXY_ADDRESS, InetSocketAddress, GInetSocketAddress)
+  _CLASS_GOBJECT(ProxyAddress, GProxyAddress, G_PROXY_ADDRESS, InetSocketAddress, GInetSocketAddress, , , 
GIOMM_API)
 
 protected:
   _WRAP_CTOR(ProxyAddress(const Glib::RefPtr<InetAddress>& address,
diff --git a/gio/src/proxyresolver.hg b/gio/src/proxyresolver.hg
index 43c2af41..dbd75bcb 100644
--- a/gio/src/proxyresolver.hg
+++ b/gio/src/proxyresolver.hg
@@ -39,9 +39,9 @@ namespace Gio
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class ProxyResolver : public Glib::Interface
+class GIOMM_API ProxyResolver : public Glib::Interface
 {
-  _CLASS_INTERFACE(ProxyResolver, GProxyResolver, G_PROXY_RESOLVER, GProxyResolverInterface)
+  _CLASS_INTERFACE(ProxyResolver, GProxyResolver, G_PROXY_RESOLVER, GProxyResolverInterface, , , GIOMM_API)
 
 public:
 
diff --git a/gio/src/remoteactiongroup.hg b/gio/src/remoteactiongroup.hg
index e3b3cd6b..1369966f 100644
--- a/gio/src/remoteactiongroup.hg
+++ b/gio/src/remoteactiongroup.hg
@@ -16,6 +16,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/interface.h>
 
 _DEFS(giomm,gio)
@@ -56,9 +58,9 @@ namespace Gio
  * platform data for action invocations that arrive by way of D-Bus.
  * @newin{2,32}
  */
-class RemoteActionGroup : public Glib::Interface
+class GIOMM_API RemoteActionGroup : public Glib::Interface
 {
-  _CLASS_INTERFACE(RemoteActionGroup, GRemoteActionGroup, G_REMOTE_ACTION_GROUP, GRemoteActionGroupInterface)
+  _CLASS_INTERFACE(RemoteActionGroup, GRemoteActionGroup, G_REMOTE_ACTION_GROUP, 
GRemoteActionGroupInterface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(void activate_action(const Glib::ustring& action_name, const Glib::VariantBase& parameter, 
const Glib::VariantBase& platform_data), g_remote_action_group_activate_action_full)
diff --git a/gio/src/resolver.hg b/gio/src/resolver.hg
index e01be3ce..599ecb92 100644
--- a/gio/src/resolver.hg
+++ b/gio/src/resolver.hg
@@ -28,7 +28,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Glib
 {
 
-class VariantContainerBase;
+class GLIBMM_API VariantContainerBase;
 
 }
 
@@ -50,10 +50,10 @@ _WRAP_ENUM(ResolverRecordType, GResolverRecordType)
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class Resolver
+class GIOMM_API Resolver
 : public Glib::Object
 {
-  _CLASS_GOBJECT(Resolver, GResolver, G_RESOLVER, Glib::Object, GObject)
+  _CLASS_GOBJECT(Resolver, GResolver, G_RESOLVER, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
 
@@ -167,10 +167,19 @@ public:
   _WRAP_SIGNAL(void reload(), reload, no_default_handler)
 };
 
+GIOMM_API
 std::string hostname_to_ascii (const Glib::ustring& hostname);
+
+GIOMM_API
 Glib::ustring hostname_to_unicode (const Glib::ustring& hostname);
+
+GIOMM_API
 bool hostname_is_non_ascii (const Glib::ustring& hostname);
+
+GIOMM_API
 bool hostname_is_ascii_encoded (const Glib::ustring& hostname);
+
+GIOMM_API
 bool hostname_is_ip_address (const Glib::ustring& hostname);
 
 } // namespace Gio
diff --git a/gio/src/resource.hg b/gio/src/resource.hg
index be41fac4..88855145 100644
--- a/gio/src/resource.hg
+++ b/gio/src/resource.hg
@@ -32,7 +32,7 @@ namespace Gio
 
 /** Exception class for resource file handling errors.
  */
-_WRAP_GERROR(ResourceError, GResourceError, G_RESOURCE_ERROR, NO_GTYPE, newin "2,34")
+_WRAP_GERROR(ResourceError, GResourceError, G_RESOURCE_ERROR, NO_GTYPE, newin "2,34", decl_prefix GIOMM_API)
 
 _WRAP_ENUM(ResourceFlags, GResourceFlags, newin "2,44")
 _WRAP_ENUM(ResourceLookupFlags, GResourceLookupFlags, newin "2,44")
@@ -127,9 +127,9 @@ _WRAP_ENUM(ResourceLookupFlags, GResourceLookupFlags, newin "2,44")
  *
  * @newin{2,44}
  */
-class Resource final
+class GIOMM_API Resource final
 {
-  _CLASS_OPAQUE_REFCOUNTED(Resource, GResource, NONE, g_resource_ref, g_resource_unref)
+  _CLASS_OPAQUE_REFCOUNTED(Resource, GResource, NONE, g_resource_ref, g_resource_unref, GIOMM_API)
   _IGNORE(g_resource_ref, g_resource_unref)
 
 public:
diff --git a/gio/src/seekable.hg b/gio/src/seekable.hg
index ec3a635b..1749bf7f 100644
--- a/gio/src/seekable.hg
+++ b/gio/src/seekable.hg
@@ -41,9 +41,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class Seekable : public Glib::Interface
+class GIOMM_API Seekable : public Glib::Interface
 {
-  _CLASS_INTERFACE(Seekable, GSeekable, G_SEEKABLE, GSeekableIface)
+  _CLASS_INTERFACE(Seekable, GSeekable, G_SEEKABLE, GSeekableIface, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(goffset tell() const, g_seekable_tell)
diff --git a/gio/src/settings.hg b/gio/src/settings.hg
index 218a4412..b335881c 100644
--- a/gio/src/settings.hg
+++ b/gio/src/settings.hg
@@ -26,7 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gio
 {
-class SettingsSchema;
+class GIOMM_API SettingsSchema;
 
   _WRAP_ENUM(SettingsBindFlags, GSettingsBindFlags)
 
@@ -37,9 +37,9 @@ class SettingsSchema;
  *
  * @newin{2,28}
  */
-class Settings : public Glib::Object
+class GIOMM_API Settings : public Glib::Object
 {
-  _CLASS_GOBJECT(Settings, GSettings, G_SETTINGS, Glib::Object, GObject)
+  _CLASS_GOBJECT(Settings, GSettings, G_SETTINGS, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _WRAP_CTOR(Settings(const Glib::ustring& schema_id), g_settings_new)
diff --git a/gio/src/settingsschema.hg b/gio/src/settingsschema.hg
index 5d4da543..4bd9d590 100644
--- a/gio/src/settingsschema.hg
+++ b/gio/src/settingsschema.hg
@@ -51,9 +51,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class SettingsSchema final
+class GIOMM_API SettingsSchema final
 {
-  _CLASS_OPAQUE_REFCOUNTED(SettingsSchema, GSettingsSchema, NONE, g_settings_schema_ref, 
g_settings_schema_unref)
+  _CLASS_OPAQUE_REFCOUNTED(SettingsSchema, GSettingsSchema, NONE, g_settings_schema_ref, 
g_settings_schema_unref, GIOMM_API)
   _IS_REFCOUNTED_BOXEDTYPE
 
 protected:
diff --git a/gio/src/settingsschemakey.hg b/gio/src/settingsschemakey.hg
index 4734ca05..49bcf418 100644
--- a/gio/src/settingsschemakey.hg
+++ b/gio/src/settingsschemakey.hg
@@ -35,9 +35,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class SettingsSchemaKey final
+class GIOMM_API SettingsSchemaKey final
 {
-  _CLASS_OPAQUE_REFCOUNTED(SettingsSchemaKey, GSettingsSchemaKey, NONE, g_settings_schema_key_ref, 
g_settings_schema_key_unref)
+  _CLASS_OPAQUE_REFCOUNTED(SettingsSchemaKey, GSettingsSchemaKey, NONE, g_settings_schema_key_ref, 
g_settings_schema_key_unref, GIOMM_API)
 
 protected:
   _IGNORE(g_settings_schema_key_ref, g_settings_schema_key_unref)
diff --git a/gio/src/settingsschemasource.hg b/gio/src/settingsschemasource.hg
index 5975c38c..536fe5bb 100644
--- a/gio/src/settingsschemasource.hg
+++ b/gio/src/settingsschemasource.hg
@@ -34,9 +34,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class SettingsSchemaSource final
+class GIOMM_API SettingsSchemaSource final
 {
-  _CLASS_OPAQUE_REFCOUNTED(SettingsSchemaSource, GSettingsSchemaSource, NONE, g_settings_schema_source_ref, 
g_settings_schema_source_unref)
+  _CLASS_OPAQUE_REFCOUNTED(SettingsSchemaSource, GSettingsSchemaSource, NONE, g_settings_schema_source_ref, 
g_settings_schema_source_unref, GIOMM_API)
 
 protected:
   _IGNORE(g_settings_schema_source_ref, g_settings_schema_source_unref)
diff --git a/gio/src/simpleaction.hg b/gio/src/simpleaction.hg
index 58741121..6e1445c7 100644
--- a/gio/src/simpleaction.hg
+++ b/gio/src/simpleaction.hg
@@ -37,9 +37,9 @@ namespace Gio
  *
  * @newin{2,32}
  */
-class SimpleAction : public Glib::Object, public Action
+class GIOMM_API SimpleAction : public Glib::Object, public Action
 {
-  _CLASS_GOBJECT(SimpleAction, GSimpleAction, G_SIMPLE_ACTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(SimpleAction, GSimpleAction, G_SIMPLE_ACTION, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Action)
   _STRUCT_NOT_HIDDEN
 
diff --git a/gio/src/simpleactiongroup.hg b/gio/src/simpleactiongroup.hg
index 770b0294..1e60d7d8 100644
--- a/gio/src/simpleactiongroup.hg
+++ b/gio/src/simpleactiongroup.hg
@@ -25,7 +25,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class Action;
+class GIOMM_API Action;
 
 /** SimpleActionGroup - A simple ActionGroup implementation.
  * SimpleActionGroup is a hash table filled with Action objects, implementing
@@ -33,11 +33,11 @@ class Action;
  *
  * @newin{2,32}
  */
-class SimpleActionGroup : public Glib::Object,
-                          public ActionGroup,
-                          public ActionMap
+class GIOMM_API SimpleActionGroup : public Glib::Object,
+                                    public ActionGroup,
+                                    public ActionMap
 {
-  _CLASS_GOBJECT(SimpleActionGroup, GSimpleActionGroup, G_SIMPLE_ACTION_GROUP, Glib::Object, GObject)
+  _CLASS_GOBJECT(SimpleActionGroup, GSimpleActionGroup, G_SIMPLE_ACTION_GROUP, Glib::Object, GObject, , , 
GIOMM_API)
   _IMPLEMENTS_INTERFACE(ActionGroup)
   _IMPLEMENTS_INTERFACE(ActionMap)
 
diff --git a/gio/src/simpleiostream.hg b/gio/src/simpleiostream.hg
index e510649d..af5714d9 100644
--- a/gio/src/simpleiostream.hg
+++ b/gio/src/simpleiostream.hg
@@ -36,9 +36,9 @@ namespace Gio
  *
  * @newin{2,46}
  */
-class SimpleIOStream : public Gio::IOStream
+class GIOMM_API SimpleIOStream : public Gio::IOStream
 {
-  _CLASS_GOBJECT(SimpleIOStream, GSimpleIOStream, G_SIMPLE_IO_STREAM, Gio::IOStream, GIOStream)
+  _CLASS_GOBJECT(SimpleIOStream, GSimpleIOStream, G_SIMPLE_IO_STREAM, Gio::IOStream, GIOStream, , , 
GIOMM_API)
 
 protected:
   /** Creates a new SimpleIOStream wrapping @a input_stream and @a output_stream.
diff --git a/gio/src/simplepermission.hg b/gio/src/simplepermission.hg
index cce3b6bb..21dab98a 100644
--- a/gio/src/simplepermission.hg
+++ b/gio/src/simplepermission.hg
@@ -31,9 +31,9 @@ namespace Gio
  * Calling Permission::acquire() or Permission::release() will result
  * in errors.
  */
-class SimplePermission : public Permission
+class GIOMM_API SimplePermission : public Permission
 {
-  _CLASS_GOBJECT(SimplePermission, GSimplePermission, G_SIMPLE_PERMISSION, Gio::Permission, GPermission)
+  _CLASS_GOBJECT(SimplePermission, GSimplePermission, G_SIMPLE_PERMISSION, Gio::Permission, GPermission, , , 
GIOMM_API)
 
 protected:
 
diff --git a/gio/src/socket.hg b/gio/src/socket.hg
index b3b0e292..7e386091 100644
--- a/gio/src/socket.hg
+++ b/gio/src/socket.hg
@@ -28,7 +28,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 
 namespace Gio
 {
-class SocketSource;
+class GIOMM_API SocketSource;
 
 _WRAP_ENUM(SocketType, GSocketType)
 _WRAP_ENUM(SocketProtocol, GSocketProtocol)
@@ -85,9 +85,9 @@ _WRAP_ENUM(SocketMsgFlags, GSocketMsgFlags)
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class Socket : public Glib::Object, public Initable
+class GIOMM_API Socket : public Glib::Object, public Initable
 {
-  _CLASS_GOBJECT(Socket, GSocket, G_SOCKET, Glib::Object, GObject)
+  _CLASS_GOBJECT(Socket, GSocket, G_SOCKET, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Initable)
 
 protected:
diff --git a/gio/src/socketaddress.hg b/gio/src/socketaddress.hg
index 713986b8..4c6409e2 100644
--- a/gio/src/socketaddress.hg
+++ b/gio/src/socketaddress.hg
@@ -32,10 +32,10 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketAddress : public Glib::Object,
+class GIOMM_API SocketAddress : public Glib::Object,
     public SocketConnectable
 {
-  _CLASS_GOBJECT(SocketAddress, GSocketAddress, G_SOCKET_ADDRESS, Glib::Object, GObject)
+  _CLASS_GOBJECT(SocketAddress, GSocketAddress, G_SOCKET_ADDRESS, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(SocketConnectable)
 
 public:
diff --git a/gio/src/socketaddressenumerator.hg b/gio/src/socketaddressenumerator.hg
index 28cf187d..050cc6af 100644
--- a/gio/src/socketaddressenumerator.hg
+++ b/gio/src/socketaddressenumerator.hg
@@ -24,16 +24,16 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class SocketAddress;
+class GIOMM_API SocketAddress;
 
 /** Enumerator type for objects that contain or generate SocketAddresses
  *
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketAddressEnumerator : public Glib::Object
+class GIOMM_API SocketAddressEnumerator : public Glib::Object
 {
-  _CLASS_GOBJECT(SocketAddressEnumerator, GSocketAddressEnumerator, G_SOCKET_ADDRESS_ENUMERATOR, 
Glib::Object, GObject)
+  _CLASS_GOBJECT(SocketAddressEnumerator, GSocketAddressEnumerator, G_SOCKET_ADDRESS_ENUMERATOR, 
Glib::Object, GObject, , , GIOMM_API)
 
 public:
   _WRAP_METHOD(Glib::RefPtr<SocketAddress> next(const Glib::RefPtr<Cancellable>& cancellable{?}), 
g_socket_address_enumerator_next, errthrow)
diff --git a/gio/src/socketclient.hg b/gio/src/socketclient.hg
index 152b06fd..635c0e5d 100644
--- a/gio/src/socketclient.hg
+++ b/gio/src/socketclient.hg
@@ -51,9 +51,9 @@ _WRAP_ENUM(SocketClientEvent, GSocketClientEvent)
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketClient : public Glib::Object
+class GIOMM_API SocketClient : public Glib::Object
 {
-  _CLASS_GOBJECT(SocketClient, GSocketClient, G_SOCKET_CLIENT, Glib::Object, GObject)
+  _CLASS_GOBJECT(SocketClient, GSocketClient, G_SOCKET_CLIENT, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/socketconnectable.hg b/gio/src/socketconnectable.hg
index 266a8a64..2488b8de 100644
--- a/gio/src/socketconnectable.hg
+++ b/gio/src/socketconnectable.hg
@@ -32,9 +32,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketConnectable : public Glib::Interface
+class GIOMM_API SocketConnectable : public Glib::Interface
 {
-  _CLASS_INTERFACE(SocketConnectable, GSocketConnectable, G_SOCKET_CONNECTABLE, GSocketConnectableIface)
+  _CLASS_INTERFACE(SocketConnectable, GSocketConnectable, G_SOCKET_CONNECTABLE, GSocketConnectableIface, , , 
GIOMM_API)
 
 public:
   _WRAP_METHOD (Glib::RefPtr<SocketAddressEnumerator> enumerate(), g_socket_connectable_enumerate)
diff --git a/gio/src/socketconnection.hg b/gio/src/socketconnection.hg
index 1c9a7386..64237676 100644
--- a/gio/src/socketconnection.hg
+++ b/gio/src/socketconnection.hg
@@ -46,9 +46,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketConnection : public Gio::IOStream
+class GIOMM_API SocketConnection : public Gio::IOStream
 {
-  _CLASS_GOBJECT(SocketConnection, GSocketConnection, G_SOCKET_CONNECTION, Gio::IOStream, GIOStream)
+  _CLASS_GOBJECT(SocketConnection, GSocketConnection, G_SOCKET_CONNECTION, Gio::IOStream, GIOStream, , , 
GIOMM_API)
 
 public:
   _WRAP_METHOD(bool connect(const Glib::RefPtr<SocketAddress>& address, const Glib::RefPtr<Cancellable>& 
cancellable{?}), g_socket_connection_connect, errthrow)
diff --git a/gio/src/socketcontrolmessage.hg b/gio/src/socketcontrolmessage.hg
index 1ca652a1..8d04d0ba 100644
--- a/gio/src/socketcontrolmessage.hg
+++ b/gio/src/socketcontrolmessage.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <set>
 
@@ -48,9 +50,9 @@ namespace Gio
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class SocketControlMessage : public Glib::Object
+class GIOMM_API SocketControlMessage : public Glib::Object
 {
-  _CLASS_GOBJECT(SocketControlMessage, GSocketControlMessage, G_SOCKET_CONTROL_MESSAGE, Glib::Object, 
GObject)
+  _CLASS_GOBJECT(SocketControlMessage, GSocketControlMessage, G_SOCKET_CONTROL_MESSAGE, Glib::Object, 
GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/socketlistener.hg b/gio/src/socketlistener.hg
index 4520635e..e19af91d 100644
--- a/gio/src/socketlistener.hg
+++ b/gio/src/socketlistener.hg
@@ -42,9 +42,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketListener : public Glib::Object
+class GIOMM_API SocketListener : public Glib::Object
 {
-  _CLASS_GOBJECT(SocketListener, GSocketListener, G_SOCKET_LISTENER, Glib::Object, GObject)
+  _CLASS_GOBJECT(SocketListener, GSocketListener, G_SOCKET_LISTENER, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/socketservice.hg b/gio/src/socketservice.hg
index a21eb187..871af83a 100644
--- a/gio/src/socketservice.hg
+++ b/gio/src/socketservice.hg
@@ -54,9 +54,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SocketService : public Gio::SocketListener
+class GIOMM_API SocketService : public Gio::SocketListener
 {
-  _CLASS_GOBJECT(SocketService, GSocketService, G_SOCKET_SERVICE, Gio::SocketListener, GSocketListener)
+  _CLASS_GOBJECT(SocketService, GSocketService, G_SOCKET_SERVICE, Gio::SocketListener, GSocketListener, , , 
GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/srvtarget.hg b/gio/src/srvtarget.hg
index 5ca8f60a..70403093 100644
--- a/gio/src/srvtarget.hg
+++ b/gio/src/srvtarget.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/listhandle.h>
 
 // unfortunately we need to include the C header for the type traits
@@ -43,9 +45,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class SrvTarget
+class GIOMM_API SrvTarget
 {
-  _CLASS_BOXEDTYPE(SrvTarget, GSrvTarget, NONE, g_srv_target_copy, g_srv_target_free)
+  _CLASS_BOXEDTYPE(SrvTarget, GSrvTarget, NONE, g_srv_target_copy, g_srv_target_free, GIOMM_API)
 public:
   SrvTarget(const Glib::ustring& hostname, guint16 port, guint16 priority, guint16 weight);
 
diff --git a/gio/src/tcpconnection.hg b/gio/src/tcpconnection.hg
index 6352c179..7a6394fd 100644
--- a/gio/src/tcpconnection.hg
+++ b/gio/src/tcpconnection.hg
@@ -32,9 +32,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class TcpConnection : public Gio::SocketConnection
+class GIOMM_API TcpConnection : public Gio::SocketConnection
 {
-    _CLASS_GOBJECT(TcpConnection, GTcpConnection, G_TCP_CONNECTION, Gio::SocketConnection, GSocketConnection)
+    _CLASS_GOBJECT(TcpConnection, GTcpConnection, G_TCP_CONNECTION, Gio::SocketConnection, 
GSocketConnection, , , GIOMM_API)
 
 public:
     _WRAP_METHOD(void set_graceful_disconnect (bool graceful_disconnect), 
g_tcp_connection_set_graceful_disconnect)
diff --git a/gio/src/tcpwrapperconnection.hg b/gio/src/tcpwrapperconnection.hg
index 420d17ab..53a2c3f1 100644
--- a/gio/src/tcpwrapperconnection.hg
+++ b/gio/src/tcpwrapperconnection.hg
@@ -33,9 +33,9 @@ namespace Gio
  * @newin{2,44}
  * @ingroup NetworkIO
  */
-class TcpWrapperConnection : public Gio::TcpConnection
+class GIOMM_API TcpWrapperConnection : public Gio::TcpConnection
 {
-    _CLASS_GOBJECT(TcpWrapperConnection, GTcpWrapperConnection, G_TCP_WRAPPER_CONNECTION, 
Gio::TcpConnection, GTcpConnection)
+    _CLASS_GOBJECT(TcpWrapperConnection, GTcpWrapperConnection, G_TCP_WRAPPER_CONNECTION, 
Gio::TcpConnection, GTcpConnection, , , GIOMM_API)
 
 public:
 
diff --git a/gio/src/themedicon.hg b/gio/src/themedicon.hg
index 7aaf2332..f8efcbd5 100644
--- a/gio/src/themedicon.hg
+++ b/gio/src/themedicon.hg
@@ -36,11 +36,11 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class ThemedIcon
+class GIOMM_API ThemedIcon
 : public Glib::Object,
   public Icon
 {
-  _CLASS_GOBJECT(ThemedIcon, GThemedIcon, G_THEMED_ICON, Glib::Object, GObject)
+  _CLASS_GOBJECT(ThemedIcon, GThemedIcon, G_THEMED_ICON, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Icon)
 
 protected:
diff --git a/gio/src/threadedsocketservice.hg b/gio/src/threadedsocketservice.hg
index ef239745..ce804550 100644
--- a/gio/src/threadedsocketservice.hg
+++ b/gio/src/threadedsocketservice.hg
@@ -44,9 +44,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class ThreadedSocketService : public Gio::SocketService
+class GIOMM_API ThreadedSocketService : public Gio::SocketService
 {
-    _CLASS_GOBJECT(ThreadedSocketService, GThreadedSocketService, G_THREADED_SOCKET_SERVICE, 
Gio::SocketService, GSocketService)
+    _CLASS_GOBJECT(ThreadedSocketService, GThreadedSocketService, G_THREADED_SOCKET_SERVICE, 
Gio::SocketService, GSocketService, , , GIOMM_API)
 
 protected:
     _WRAP_CTOR(ThreadedSocketService(int max_threads), g_threaded_socket_service_new)
diff --git a/gio/src/tlscertificate.hg b/gio/src/tlscertificate.hg
index 09c992e2..47869aca 100644
--- a/gio/src/tlscertificate.hg
+++ b/gio/src/tlscertificate.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <giomm/enums.h>
 
@@ -24,14 +26,14 @@ namespace Glib
 {
 
 // Forward declaration.
-class ByteArray;
+class GLIBMM_API ByteArray;
 
 }
 
 namespace Gio
 {
 
-class SocketConnectable;
+class GIOMM_API SocketConnectable;
 
 /** TlsCertificate - TLS certificate.
  * A certificate used for TLS authentication and encryption. This can represent
@@ -40,9 +42,9 @@ class SocketConnectable;
  * needed when acting as a TlsServerConnection).
  * @newin{2,36}
  */
-class TlsCertificate : public Glib::Object
+class GIOMM_API TlsCertificate : public Glib::Object
 {
-  _CLASS_GOBJECT(TlsCertificate, GTlsCertificate, G_TLS_CERTIFICATE, Glib::Object, GObject)
+  _CLASS_GOBJECT(TlsCertificate, GTlsCertificate, G_TLS_CERTIFICATE, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _WRAP_CTOR(TlsCertificate(const std::string& data, gssize length), g_tls_certificate_new_from_pem, 
errthrow)
diff --git a/gio/src/tlsclientconnection.hg b/gio/src/tlsclientconnection.hg
index 5937a82d..aa096e12 100644
--- a/gio/src/tlsclientconnection.hg
+++ b/gio/src/tlsclientconnection.hg
@@ -29,18 +29,18 @@ typedef struct _GTlsClientConnectionInterface GTlsClientConnectionInterface;
 namespace Gio
 {
 
-class SocketConnectable;
+class GIOMM_API SocketConnectable;
 
 /** TlsClientConnection - TLS client-side connection.
  * TlsClientConnection is the client-side subclass of TlsConnection,
  * representing a client-side TLS connection.
  * @newin{2,36}
  */
-class TlsClientConnection
+class GIOMM_API TlsClientConnection
 : public Glib::Interface,
   public TlsConnection
 {
-  _CLASS_INTERFACE(TlsClientConnection, GTlsClientConnection, G_TLS_CLIENT_CONNECTION, 
GTlsClientConnectionInterface)
+  _CLASS_INTERFACE(TlsClientConnection, GTlsClientConnection, G_TLS_CLIENT_CONNECTION, 
GTlsClientConnectionInterface, , , GIOMM_API)
   _CUSTOM_CTOR_CAST
 
 public:
diff --git a/gio/src/tlsconnection.hg b/gio/src/tlsconnection.hg
index 142bd2b3..f332abe1 100644
--- a/gio/src/tlsconnection.hg
+++ b/gio/src/tlsconnection.hg
@@ -28,9 +28,9 @@ namespace Gio
 
 _WRAP_ENUM(TlsRehandshakeMode,GTlsRehandshakeMode)
 
-class Cancellable;
-class TlsDatabase;
-class TlsInteraction;
+class GIOMM_API Cancellable;
+class GIOMM_API TlsDatabase;
+class GIOMM_API TlsInteraction;
 
 /** TlsConnection - TLS connection type.
  * TlsConnection is the base TLS connection class type, which wraps an IOStream
@@ -39,9 +39,9 @@ class TlsInteraction;
  * server-side TLS, respectively.
  * @newin{2,36}
  */
-class TlsConnection : public IOStream
+class GIOMM_API TlsConnection : public IOStream
 {
-  _CLASS_GOBJECT(TlsConnection, GTlsConnection, G_TLS_CONNECTION, IOStream, GIOStream)
+  _CLASS_GOBJECT(TlsConnection, GTlsConnection, G_TLS_CONNECTION, IOStream, GIOStream, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/tlsdatabase.hg b/gio/src/tlsdatabase.hg
index a99daaae..95d577c4 100644
--- a/gio/src/tlsdatabase.hg
+++ b/gio/src/tlsdatabase.hg
@@ -25,7 +25,7 @@ namespace Glib
 {
 
 // Forward declaration.
-class ByteArray;
+class GLIBMM_API ByteArray;
 
 }
 
@@ -35,10 +35,10 @@ namespace Gio
 _WRAP_ENUM(TlsDatabaseVerifyFlags, GTlsDatabaseVerifyFlags)
 _WRAP_ENUM(TlsDatabaseLookupFlags, GTlsDatabaseLookupFlags)
 
-class Cancellable;
-class SocketConnectable;
-class TlsCertificate;
-class TlsInteraction;
+class GIOMM_API Cancellable;
+class GIOMM_API SocketConnectable;
+class GIOMM_API TlsCertificate;
+class GIOMM_API TlsInteraction;
 
 /** TlsDatabase - TLS database type.
  * TlsDatabase is used to lookup certificates and other information from a
@@ -49,9 +49,9 @@ class TlsInteraction;
  * It is used internally by TlsConnection.
  * @newin{2,36}
  */
-class TlsDatabase : public Glib::Object
+class GIOMM_API TlsDatabase : public Glib::Object
 {
-  _CLASS_GOBJECT(TlsDatabase, GTlsDatabase, G_TLS_DATABASE, Glib::Object, GObject)
+  _CLASS_GOBJECT(TlsDatabase, GTlsDatabase, G_TLS_DATABASE, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/tlsfiledatabase.hg b/gio/src/tlsfiledatabase.hg
index bed39f83..1fa26f5f 100644
--- a/gio/src/tlsfiledatabase.hg
+++ b/gio/src/tlsfiledatabase.hg
@@ -36,11 +36,11 @@ namespace Gio
  *
  * @newin{2,36}
  */
-class TlsFileDatabase
+class GIOMM_API TlsFileDatabase
 : public Glib::Interface,
   public TlsDatabase
 {
-  _CLASS_INTERFACE(TlsFileDatabase, GTlsFileDatabase, G_TLS_FILE_DATABASE, GTlsFileDatabaseInterface)
+  _CLASS_INTERFACE(TlsFileDatabase, GTlsFileDatabase, G_TLS_FILE_DATABASE, GTlsFileDatabaseInterface, , , 
GIOMM_API)
 
 public:
   //TODO: It is not possible to use _WRAP_CTOR()/WRAP_CREATE() here because this
diff --git a/gio/src/tlsinteraction.hg b/gio/src/tlsinteraction.hg
index 09bb2cb8..ed1ed019 100644
--- a/gio/src/tlsinteraction.hg
+++ b/gio/src/tlsinteraction.hg
@@ -28,8 +28,8 @@ namespace Gio
 _WRAP_ENUM(TlsInteractionResult, GTlsInteractionResult)
 _WRAP_ENUM(TlsCertificateRequestFlags, GTlsCertificateRequestFlags)
 
-class Cancellable;
-class TlsPassword;
+class GIOMM_API Cancellable;
+class GIOMM_API TlsPassword;
 
 /** TlsInteraction - Interaction with the user during TLS operations.
  * TlsInteraction provides a mechanism for the TLS connection and database code
@@ -53,9 +53,9 @@ class TlsPassword;
  * finish method.
  * @newin{2,36}
  */
-class TlsInteraction : public Glib::Object
+class GIOMM_API TlsInteraction : public Glib::Object
 {
-  _CLASS_GOBJECT(TlsInteraction, GTlsInteraction, G_TLS_INTERACTION, Glib::Object, GObject)
+  _CLASS_GOBJECT(TlsInteraction, GTlsInteraction, G_TLS_INTERACTION, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _CTOR_DEFAULT
diff --git a/gio/src/tlspassword.hg b/gio/src/tlspassword.hg
index 28a54135..12e8baf8 100644
--- a/gio/src/tlspassword.hg
+++ b/gio/src/tlspassword.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 
 _DEFS(giomm,gio)
@@ -28,9 +30,9 @@ _WRAP_ENUM(TlsPasswordFlags, GTlsPasswordFlags)
  * Holds a password used in TLS.
  * @newin{2,36}
  */
-class TlsPassword : public Glib::Object
+class GIOMM_API TlsPassword : public Glib::Object
 {
-  _CLASS_GOBJECT(TlsPassword, GTlsPassword, G_TLS_PASSWORD, Glib::Object, GObject)
+  _CLASS_GOBJECT(TlsPassword, GTlsPassword, G_TLS_PASSWORD, Glib::Object, GObject, , , GIOMM_API)
 
 protected:
   _WRAP_CTOR(TlsPassword(const Glib::ustring& description{.}, TlsPasswordFlags flags{.} = 
Gio::TLS_PASSWORD_NONE), g_tls_password_new)
diff --git a/gio/src/tlsserverconnection.hg b/gio/src/tlsserverconnection.hg
index a9b52a43..7b4c8b8b 100644
--- a/gio/src/tlsserverconnection.hg
+++ b/gio/src/tlsserverconnection.hg
@@ -34,9 +34,9 @@ namespace Gio
  * representing a server-side TLS connection.
  * @newin{2,36}
  */
-class TlsServerConnection : public Glib::Interface, public TlsConnection
+class GIOMM_API TlsServerConnection : public Glib::Interface, public TlsConnection
 {
-  _CLASS_INTERFACE(TlsServerConnection, GTlsServerConnection, G_TLS_SERVER_CONNECTION, 
GTlsServerConnectionInterface)
+  _CLASS_INTERFACE(TlsServerConnection, GTlsServerConnection, G_TLS_SERVER_CONNECTION, 
GTlsServerConnectionInterface, , , GIOMM_API)
   _CUSTOM_CTOR_CAST
 
 public:
diff --git a/gio/src/unixconnection.hg b/gio/src/unixconnection.hg
index 1ddd1d24..3b157ab3 100644
--- a/gio/src/unixconnection.hg
+++ b/gio/src/unixconnection.hg
@@ -35,9 +35,9 @@ namespace Gio
  * @newin{2,24}
  * @ingroup NetworkIO
  */
-class UnixConnection : public Gio::SocketConnection
+class GIOMM_API UnixConnection : public Gio::SocketConnection
 {
-    _CLASS_GOBJECT(UnixConnection, GUnixConnection, G_UNIX_CONNECTION, Gio::SocketConnection, 
GSocketConnection)
+    _CLASS_GOBJECT(UnixConnection, GUnixConnection, G_UNIX_CONNECTION, Gio::SocketConnection, 
GSocketConnection, , , GIOMM_API)
     _GTKMMPROC_WIN32_NO_WRAP
 
 public:
diff --git a/gio/src/unixcredentialsmessage.hg b/gio/src/unixcredentialsmessage.hg
index 9ba8239a..49eb02e1 100644
--- a/gio/src/unixcredentialsmessage.hg
+++ b/gio/src/unixcredentialsmessage.hg
@@ -22,7 +22,7 @@ _PINCLUDE(giomm/private/socketcontrolmessage_p.h)
 namespace Gio
 {
 
-class Credentials;
+class GIOMM_API Credentials;
 
 /** UnixCredentialsMessage - A SocketControlMessage containing credentials.
  * This SocketControlMessage contains a Credentials instance. It may be sent
@@ -37,9 +37,9 @@ class Credentials;
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class UnixCredentialsMessage : public SocketControlMessage
+class GIOMM_API UnixCredentialsMessage : public SocketControlMessage
 {
-  _CLASS_GOBJECT(UnixCredentialsMessage, GUnixCredentialsMessage, G_UNIX_CREDENTIALS_MESSAGE, 
Gio::SocketControlMessage, GSocketControlMessage)
+  _CLASS_GOBJECT(UnixCredentialsMessage, GUnixCredentialsMessage, G_UNIX_CREDENTIALS_MESSAGE, 
Gio::SocketControlMessage, GSocketControlMessage, , , GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/unixfdlist.hg b/gio/src/unixfdlist.hg
index 838793f8..0f06dccf 100644
--- a/gio/src/unixfdlist.hg
+++ b/gio/src/unixfdlist.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <glibmm/arrayhandle.h>
 
@@ -34,9 +36,9 @@ namespace Gio
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class UnixFDList : public Glib::Object
+class GIOMM_API UnixFDList : public Glib::Object
 {
-  _CLASS_GOBJECT(UnixFDList, GUnixFDList, G_UNIX_FD_LIST, Glib::Object, GObject)
+  _CLASS_GOBJECT(UnixFDList, GUnixFDList, G_UNIX_FD_LIST, Glib::Object, GObject, , , GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/unixfdmessage.hg b/gio/src/unixfdmessage.hg
index f418f94b..4b065b2f 100644
--- a/gio/src/unixfdmessage.hg
+++ b/gio/src/unixfdmessage.hg
@@ -23,7 +23,7 @@ _PINCLUDE(giomm/private/socketcontrolmessage_p.h)
 namespace Gio
 {
 
-class UnixFDList;
+class GIOMM_API UnixFDList;
 
 /** UnixFDMessage — A GSocketControlMessage containing a GUnixFDList.
  * This SocketControlMessage contains a UnixFDList. It may be sent using
@@ -38,9 +38,9 @@ class UnixFDList;
  * @ingroup NetworkIO
  * @newin{2,28}
  */
-class UnixFDMessage : public SocketControlMessage
+class GIOMM_API UnixFDMessage : public SocketControlMessage
 {
-  _CLASS_GOBJECT(UnixFDMessage, GUnixFDMessage, G_UNIX_FD_MESSAGE, Gio::SocketControlMessage, 
GSocketControlMessage)
+  _CLASS_GOBJECT(UnixFDMessage, GUnixFDMessage, G_UNIX_FD_MESSAGE, Gio::SocketControlMessage, 
GSocketControlMessage, , , GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/unixinputstream.hg b/gio/src/unixinputstream.hg
index de00b229..b299e9c9 100644
--- a/gio/src/unixinputstream.hg
+++ b/gio/src/unixinputstream.hg
@@ -33,9 +33,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class UnixInputStream : public Gio::InputStream
+class GIOMM_API UnixInputStream : public Gio::InputStream
 {
-  _CLASS_GOBJECT(UnixInputStream, GUnixInputStream, G_UNIX_INPUT_STREAM, Gio::InputStream, GInputStream)
+  _CLASS_GOBJECT(UnixInputStream, GUnixInputStream, G_UNIX_INPUT_STREAM, Gio::InputStream, GInputStream, , , 
GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/unixmount.hg b/gio/src/unixmount.hg
index 7c8f2f63..f815de6c 100644
--- a/gio/src/unixmount.hg
+++ b/gio/src/unixmount.hg
@@ -32,11 +32,11 @@ namespace Gio
 // TODO: GUnixMount seems to be hidden (the gunixmount.h header is not installed.)
 // But we do need to wrap GUnixMountPoint, GUnixMountEntry and GUnixMountMonitor from gunixmounts.h - notice 
the s. murrayc.
 /*
-class UnixMount
+class GIOMM_API UnixMount
 : public Glib::Object,
   public Mount
 {
-  _CLASS_GOBJECT(UnixMount, GUnixMount, G_UNIX_MOUNT, Glib::Object, GObject)
+  _CLASS_GOBJECT(UnixMount, GUnixMount, G_UNIX_MOUNT, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Mount)
   _GTKMMPROC_WIN32_NO_WRAP
 };
diff --git a/gio/src/unixoutputstream.hg b/gio/src/unixoutputstream.hg
index be49ac40..5850fc56 100644
--- a/gio/src/unixoutputstream.hg
+++ b/gio/src/unixoutputstream.hg
@@ -32,9 +32,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class UnixOutputStream : public Gio::OutputStream
+class GIOMM_API UnixOutputStream : public Gio::OutputStream
 {
-  _CLASS_GOBJECT(UnixOutputStream, GUnixOutputStream, G_UNIX_OUTPUT_STREAM, Gio::OutputStream, GOutputStream)
+  _CLASS_GOBJECT(UnixOutputStream, GUnixOutputStream, G_UNIX_OUTPUT_STREAM, Gio::OutputStream, 
GOutputStream, , , GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/unixsocketaddress.hg b/gio/src/unixsocketaddress.hg
index 5cfdc947..25cbb6e8 100644
--- a/gio/src/unixsocketaddress.hg
+++ b/gio/src/unixsocketaddress.hg
@@ -26,7 +26,7 @@ namespace Gio
 
 _WRAP_ENUM(UnixSocketAddressType, GUnixSocketAddressType)
 
-class ByteArray;
+class GLIBMM_API ByteArray;
 
 /** UnixSocketAddress - UNIX SocketAddress.
  * Support for UNIX-domain (also known as local) sockets.
@@ -45,10 +45,10 @@ class ByteArray;
  * @newin{2,28}
  * @ingroup NetworkIO
  */
-class UnixSocketAddress
+class GIOMM_API UnixSocketAddress
 : public SocketAddress
 {
-  _CLASS_GOBJECT(UnixSocketAddress, GUnixSocketAddress, G_UNIX_SOCKET_ADDRESS, SocketAddress, GSocketAddress)
+  _CLASS_GOBJECT(UnixSocketAddress, GUnixSocketAddress, G_UNIX_SOCKET_ADDRESS, SocketAddress, 
GSocketAddress, , , GIOMM_API)
   _GTKMMPROC_WIN32_NO_WRAP
 
 protected:
diff --git a/gio/src/volume.hg b/gio/src/volume.hg
index a1488d83..03b3f610 100644
--- a/gio/src/volume.hg
+++ b/gio/src/volume.hg
@@ -33,8 +33,8 @@ namespace Gio
 
 // Making a forward declaration here to avoid circular dependency.
 // file.hg already includes volume.h.
-class File;
-class Drive;
+class GIOMM_API File;
+class GIOMM_API Drive;
 
 /** The Volume interface represents user-visible objects that can be mounted.
  *
@@ -50,9 +50,9 @@ class Drive;
  *
  * @newin{2,16}
  */
-class Volume : public Glib::Interface
+class GIOMM_API Volume : public Glib::Interface
 {
-  _CLASS_INTERFACE(Volume, GVolume, G_DRIVE, GVolumeIface)
+  _CLASS_INTERFACE(Volume, GVolume, G_DRIVE, GVolumeIface, , , GIOMM_API)
 public:
   _WRAP_METHOD(std::string get_name() const, g_volume_get_name)
   _WRAP_METHOD(std::string get_uuid() const, g_volume_get_uuid)
@@ -187,6 +187,7 @@ namespace Glib
 {
 
 //Pre-declare this so we can use it in TypeTrait:
+GIOMM_API
 Glib::RefPtr<Gio::Volume> wrap(GVolume* object, bool take_copy);
 
 namespace Container_Helpers
@@ -198,7 +199,7 @@ namespace Container_Helpers
  * would not return a wrapper for an interface.
  */
 template <>
-struct TypeTraits< Glib::RefPtr<Gio::Volume> >
+struct GIOMM_API TypeTraits< Glib::RefPtr<Gio::Volume> >
 {
   using CppType = Glib::RefPtr<Gio::Volume>;
   using CType = GVolume*;
diff --git a/gio/src/volumemonitor.hg b/gio/src/volumemonitor.hg
index f51ac1c1..59725365 100644
--- a/gio/src/volumemonitor.hg
+++ b/gio/src/volumemonitor.hg
@@ -33,9 +33,9 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class VolumeMonitor : public Glib::Object
+class GIOMM_API VolumeMonitor : public Glib::Object
 {
-  _CLASS_GOBJECT(VolumeMonitor, GVolumeMonitor, G_VOLUME_MONITOR, Glib::Object, GObject)
+  _CLASS_GOBJECT(VolumeMonitor, GVolumeMonitor, G_VOLUME_MONITOR, Glib::Object, GObject, , , GIOMM_API)
 protected:
 
 public:
diff --git a/gio/src/zlibcompressor.hg b/gio/src/zlibcompressor.hg
index 58e7cc86..a0127087 100644
--- a/gio/src/zlibcompressor.hg
+++ b/gio/src/zlibcompressor.hg
@@ -14,6 +14,8 @@
  * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+_CONFIGINCLUDE(giommconfig.h)
+
 #include <glibmm/object.h>
 #include <giomm/converter.h>
 
@@ -25,16 +27,16 @@ namespace Gio
 
 _WRAP_ENUM(ZlibCompressorFormat,  GZlibCompressorFormat)
 
-class FileInfo;
+class GIOMM_API FileInfo;
 
 /** ZlibCompressor - Zlib compressor.
  * ZlibCompressor is an implementation of Converter that compresses data using
  * zlib.
  * @newin{2,34}
  */
-class ZlibCompressor : public Glib::Object, public Converter
+class GIOMM_API ZlibCompressor : public Glib::Object, public Converter
 {
-  _CLASS_GOBJECT(ZlibCompressor, GZlibCompressor, G_ZLIB_COMPRESSOR, Glib::Object, GObject)
+  _CLASS_GOBJECT(ZlibCompressor, GZlibCompressor, G_ZLIB_COMPRESSOR, Glib::Object, GObject, , , GIOMM_API)
   _IMPLEMENTS_INTERFACE(Converter)
 
 protected:
diff --git a/gio/src/zlibdecompressor.hg b/gio/src/zlibdecompressor.hg
index aab97633..7ff479a1 100644
--- a/gio/src/zlibdecompressor.hg
+++ b/gio/src/zlibdecompressor.hg
@@ -24,16 +24,16 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gio
 {
 
-class FileInfo;
+class GIOMM_API FileInfo;
 
 /** ZlibDecompressor - Zlib decompressor.
  * ZlibDecompressor is an implementation of Converter that decompresses data
  * compressed with zlib.
  * @newin{2,34}
  */
-class ZlibDecompressor : public Glib::Object, public Converter
+class GIOMM_API ZlibDecompressor : public Glib::Object, public Converter
 {
-  _CLASS_GOBJECT(ZlibDecompressor, GZlibDecompressor, G_ZLIB_DECOMPRESSOR, Glib::Object, GObject)
+  _CLASS_GOBJECT(ZlibDecompressor, GZlibDecompressor, G_ZLIB_DECOMPRESSOR, Glib::Object, GObject, , , 
GIOMM_API)
   _IMPLEMENTS_INTERFACE(Converter)
 
 protected:


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