diff -r -u taglib-1.3.1/taglib/fileref.h taglib-1.3.1-modified/taglib/fileref.h
--- taglib-1.3.1/taglib/fileref.h	2004-08-09 05:47:07.000000000 +0200
+++ taglib-1.3.1-modified/taglib/fileref.h	2005-07-14 23:37:43.038688000 +0200
@@ -22,6 +22,7 @@
 #ifndef TAGLIB_FILEREF_H
 #define TAGLIB_FILEREF_H
 
+#include <taglib.h>
 #include "audioproperties.h"
 
 namespace TagLib {
@@ -65,7 +66,7 @@
    * \endcode
    */
 
-  class FileRef
+  class TAGLIB_EXPORT FileRef
   {
   public:
 
diff -r -u taglib-1.3.1/taglib/mpeg/id3v1/id3v1tag.h taglib-1.3.1-modified/taglib/mpeg/id3v1/id3v1tag.h
--- taglib-1.3.1/taglib/mpeg/id3v1/id3v1tag.h	2004-11-06 18:27:20.000000000 +0100
+++ taglib-1.3.1-modified/taglib/mpeg/id3v1/id3v1tag.h	2005-07-14 23:41:59.046809600 +0200
@@ -92,7 +92,7 @@
      * truncation happens automatically when the tag is rendered.
      */
 
-    class Tag : public TagLib::Tag
+    class TAGLIB_EXPORT Tag : public TagLib::Tag
     {
     public:
       /*!
diff -r -u taglib-1.3.1/taglib/mpeg/id3v2/id3v2frame.h taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2frame.h
--- taglib-1.3.1/taglib/mpeg/id3v2/id3v2frame.h	2004-08-02 21:43:35.000000000 +0200
+++ taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2frame.h	2005-07-17 17:14:03.064976000 +0200
@@ -42,7 +42,7 @@
      * specific to a given frame type is handed in one of the many subclasses.
      */
 
-    class Frame
+    class TAGLIB_EXPORT Frame
     {
       friend class FrameFactory;
 
diff -r -u taglib-1.3.1/taglib/mpeg/id3v2/id3v2header.h taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2header.h
--- taglib-1.3.1/taglib/mpeg/id3v2/id3v2header.h	2003-11-04 03:48:26.000000000 +0100
+++ taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2header.h	2005-07-17 17:12:05.185473600 +0200
@@ -39,7 +39,7 @@
      * (Structure, <a href="id3v2-structure.html#3.1">3.1</a>)
      */
 
-    class Header
+    class TAGLIB_EXPORT Header
     {
     public:
       /*!
diff -r -u taglib-1.3.1/taglib/mpeg/id3v2/id3v2tag.h taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2tag.h
--- taglib-1.3.1/taglib/mpeg/id3v2/id3v2tag.h	2004-07-26 18:19:49.000000000 +0200
+++ taglib-1.3.1-modified/taglib/mpeg/id3v2/id3v2tag.h	2005-07-17 17:14:03.095019200 +0200
@@ -97,7 +97,7 @@
      * working knowledge of ID3v2 structure.  You're been warned.
      */
 
-    class Tag : public TagLib::Tag
+    class TAGLIB_EXPORT Tag : public TagLib::Tag
     {
     public:
       /*!
diff -r -u taglib-1.3.1/taglib/mpeg/mpegfile.h taglib-1.3.1-modified/taglib/mpeg/mpegfile.h
--- taglib-1.3.1/taglib/mpeg/mpegfile.h	2004-08-16 10:22:05.000000000 +0200
+++ taglib-1.3.1-modified/taglib/mpeg/mpegfile.h	2005-07-14 23:41:58.976708800 +0200
@@ -44,7 +44,7 @@
      * to the different ID3 tags.
      */
 
-    class File : public TagLib::File
+    class TAGLIB_EXPORT File : public TagLib::File
     {
     public:
       /*!
diff -r -u taglib-1.3.1/taglib/tag.h taglib-1.3.1-modified/taglib/tag.h
--- taglib-1.3.1/taglib/tag.h	2003-11-04 03:48:25.000000000 +0100
+++ taglib-1.3.1-modified/taglib/tag.h	2005-07-17 17:09:41.058228800 +0200
@@ -36,7 +36,7 @@
    * in TagLib::AudioProperties, TagLib::File and TagLib::FileRef.
    */
 
-  class Tag
+  class TAGLIB_EXPORT Tag
   {
   public:
 
diff -r -u taglib-1.3.1/taglib/toolkit/taglib.h taglib-1.3.1-modified/taglib/toolkit/taglib.h
--- taglib-1.3.1/taglib/toolkit/taglib.h	2004-11-07 17:08:47.000000000 +0100
+++ taglib-1.3.1-modified/taglib/toolkit/taglib.h	2005-07-17 17:24:54.171220800 +0200
@@ -28,6 +28,15 @@
 
 #include <string>
 
+#undef TAGLIB_EXPORT
+#ifdef GCC_HASCLASSVISIBILITY
+  #define TAGLIB_EXPORT __attribute__ ((visibility("default")))
+#else
+  #define TAGLIB_EXPORT
+#endif
+
+#include <unistd.h>
+
 //! A namespace for all TagLib related classes and functions
 
 /*!
diff -r -u taglib-1.3.1/taglib/toolkit/tbytevector.h taglib-1.3.1-modified/taglib/toolkit/tbytevector.h
--- taglib-1.3.1/taglib/toolkit/tbytevector.h	2004-05-13 02:03:33.000000000 +0200
+++ taglib-1.3.1-modified/taglib/toolkit/tbytevector.h	2005-07-17 17:14:47.088278400 +0200
@@ -36,7 +36,7 @@
    * useful for finding tag related paterns in a data array.
    */
 
-  class ByteVector
+  class TAGLIB_EXPORT ByteVector
   {
   public:
 #ifndef DO_NOT_DOCUMENT
@@ -392,6 +392,6 @@
  * \relates TagLib::ByteVector
  * Streams the ByteVector \a v to the output stream \a s.
  */
-std::ostream &operator<<(std::ostream &s, const TagLib::ByteVector &v);
+TAGLIB_EXPORT std::ostream &operator<<(std::ostream &s, const TagLib::ByteVector &v);
 
 #endif
diff -r -u taglib-1.3.1/taglib/toolkit/tfile.cpp taglib-1.3.1-modified/taglib/toolkit/tfile.cpp
--- taglib-1.3.1/taglib/toolkit/tfile.cpp	2004-11-06 18:27:20.000000000 +0100
+++ taglib-1.3.1-modified/taglib/toolkit/tfile.cpp	2005-07-14 23:38:17.187792000 +0200
@@ -25,7 +25,6 @@
 
 #include <stdio.h>
 #include <sys/stat.h>
-#include <unistd.h>
 
 using namespace TagLib;
 
diff -r -u taglib-1.3.1/taglib/toolkit/tfile.h taglib-1.3.1-modified/taglib/toolkit/tfile.h
--- taglib-1.3.1/taglib/toolkit/tfile.h	2004-06-23 23:39:39.000000000 +0200
+++ taglib-1.3.1-modified/taglib/toolkit/tfile.h	2005-07-14 23:42:21.999814400 +0200
@@ -39,7 +39,7 @@
    * ByteVector and a binary search method for finding patterns in a file.
    */
 
-  class File
+  class TAGLIB_EXPORT File
   {
   public:
     /*!
diff -r -u taglib-1.3.1/taglib/toolkit/tlist.h taglib-1.3.1-modified/taglib/toolkit/tlist.h
--- taglib-1.3.1/taglib/toolkit/tlist.h	2004-08-06 23:06:36.000000000 +0200
+++ taglib-1.3.1-modified/taglib/toolkit/tlist.h	2005-07-17 17:12:55.217416000 +0200
@@ -46,7 +46,7 @@
    * only \e then will the data be copied.
    */
 
-  template <class T> class List
+  template <class T> class TAGLIB_EXPORT List
   {
   public:
 #ifndef DO_NOT_DOCUMENT
diff -r -u taglib-1.3.1/taglib/toolkit/tstring.h taglib-1.3.1-modified/taglib/toolkit/tstring.h
--- taglib-1.3.1/taglib/toolkit/tstring.h	2004-06-23 23:39:39.000000000 +0200
+++ taglib-1.3.1-modified/taglib/toolkit/tstring.h	2005-07-14 23:16:17.910764800 +0200
@@ -24,7 +24,6 @@
 
 #include "taglib.h"
 #include "tbytevector.h"
-
 #include <string>
 
 /*!
@@ -60,7 +59,7 @@
    * possible encodings, which are the four supported by the ID3v2 standard.
    */
 
-  class String
+  class TAGLIB_EXPORT String
   {
   public:
 
@@ -409,6 +408,6 @@
  * \relates TagLib::String
  * Send the string to an output stream.
  */
-std::ostream &operator<<(std::ostream &s, const TagLib::String &str);
+TAGLIB_EXPORT std::ostream &operator<<(std::ostream &s, const TagLib::String &str);
 
 #endif
