--- a/src/xutf8/utf8Input.c
+++ b/src/xutf8/utf8Input.c
@@ -18,6 +18,7 @@
 
 #include <config.h>
 #include "../Xutf8.h"
+#include "../../FL/Fl_Export.H"
 #include <X11/X.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
@@ -53,7 +54,7 @@ typedef struct {
 #include "lcUniConv/jisx0212.h"
 #include "lcUniConv/ksc5601.h"
 
-static int
+FL_EXPORT static int
 XConvertEucTwToUtf8(char* buffer_return, int len) {
   /* FIXME */
 #if HAVE_LIBC_ICONV
@@ -120,7 +121,7 @@ XConvertEucTwToUtf8(char* buffer_return,
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertEucKrToUtf8(char* buffer_return, int len) {
   int i = 0, l = 0;
   char *buf;
@@ -160,7 +161,7 @@ XConvertEucKrToUtf8(char* buffer_return,
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertBig5ToUtf8(char* buffer_return, int len) {
   int i = 0, l = 0;
   char *buf;
@@ -189,7 +190,7 @@ XConvertBig5ToUtf8(char* buffer_return,
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertCp936extToUtf8(char* buffer_return, int len)
 {
   int i = 0, l = 0;
@@ -226,7 +227,7 @@ XConvertCp936extToUtf8(char* buffer_retu
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertGb2312ToUtf8(char* buffer_return, int len) {
   int i = 0, l = 0;
   char *buf;
@@ -261,7 +262,7 @@ XConvertGb2312ToUtf8(char* buffer_return
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertEucCnToUtf8(char* buffer_return, int len) {
   int i = 0, l = 0;
   char *buf;
@@ -300,7 +301,7 @@ XConvertEucCnToUtf8(char* buffer_return,
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertEucJpToUtf8(char* buffer_return, int len) {
   int i = 0, l = 0;
   char *buf;
@@ -373,7 +374,7 @@ XConvertEucJpToUtf8(char* buffer_return,
   return l;
 }
 
-static int
+FL_EXPORT static int
 XConvertEucToUtf8(const char*	locale,
 		  char*		buffer_return, 
 		  int		len, 
@@ -408,7 +409,7 @@ XConvertEucToUtf8(const char*	locale,
   return len;
 }
 
-int
+FL_EXPORT int
 XUtf8LookupString(XIC                 ic,
 		  XKeyPressedEvent*   event,
 		  char*               buffer_return,
--- a/src/xutf8/utf8Utils.c
+++ b/src/xutf8/utf8Utils.c
@@ -21,6 +21,7 @@
 #if !defined(WIN32) && !defined(__APPLE__)
 
 #include "../Xutf8.h"
+#include "../../FL/Fl_Export.H"
 
 /*** NOTE : all functions are LIMITED to 24 bits Unicode values !!! ***/
 
@@ -29,7 +30,7 @@
  * Returns the byte length of the converted UTF-8 char 
  * Returns -1 if the UTF-8 string is not valid 
  */
-int
+FL_EXPORT int
 XConvertUtf8ToUcs(const unsigned char     *buf,
 		  int                     len,
 		  unsigned int         	  *ucs) {
@@ -137,7 +138,7 @@ XConvertUcsToUtf8(unsigned int 	ucs,
  * returns the byte length of the first UTF-8 char 
  * (returns -1 if not valid) 
  */
-int
+FL_EXPORT int
 XUtf8CharByteLen(const unsigned char     *buf,
 		 int                     len) {
   unsigned int ucs;
@@ -165,7 +166,7 @@ XCountUtf8Char(const unsigned char 	*buf
 /* 
  * Same as XConvertUtf8ToUcs but no sanity check is done.
  */
-int
+FL_EXPORT int
 XFastConvertUtf8ToUcs(const unsigned char     *buf,
 		      int                     len,
 		      unsigned int            *ucs) {
--- a/src/xutf8/utf8Wrap.c
+++ b/src/xutf8/utf8Wrap.c
@@ -20,6 +20,7 @@
 #if !defined(WIN32) && !defined(__APPLE__)
 
 #include "../Xutf8.h"
+#include "../../FL/Fl_Export.H"
 #include <X11/Xlib.h>
 #include <ctype.h>
 #include <stdlib.h>
@@ -705,7 +706,7 @@ XUtf8_measure_extents(
 /*****************************************************************************/
 /** returns the pixel width of a UTF-8 string				    **/
 /*****************************************************************************/
-int
+FL_EXPORT int
 XUtf8TextWidth(XUtf8FontStruct 	*font_set,
 	       const char 	*string,
 	       int 		num_bytes) {
@@ -815,7 +816,7 @@ XUtf8TextWidth(XUtf8FontStruct 	*font_se
 /*****************************************************************************/
 /**  get the X font and glyph ID of a UCS char                              **/
 /*****************************************************************************/
-int
+FL_EXPORT int
 XGetUtf8FontAndGlyph(XUtf8FontStruct  *font_set,
 		     unsigned int     ucs,
 		     XFontStruct      **fnt,
@@ -886,7 +887,7 @@ XGetUtf8FontAndGlyph(XUtf8FontStruct  *f
 /*****************************************************************************/
 /** returns the pixel width of a UCS char				    **/
 /*****************************************************************************/
-int
+FL_EXPORT int
 XUtf8UcsWidth(XUtf8FontStruct  *font_set,
 	      unsigned int     ucs) {
 
