DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR Pending]

Link: http://www.fltk.org/str.php?L2632
Version: 1.3-current


Please see attached file FL_EXPORT_v1.diff for a patch. This contains all
FL_EXPORT statements for Fl_Input-derived classes and one for
Fl_Hor_Slider.

I also removed FL_EXPORT from fl_clip_region() because of a warning
(inconsistant linkage, maybe), but this seems to be an inline method in
all cases and ought to be okay therefore (adding FL_EXPORT at other places
worked as well, but I opted for the former).

I tested thoroughly with VisualC 2010 Express and compiled also with MinGW
successfully.

Mathieu, I tested also with your project and some additions to it, and it
works for me w/o warnings or errors.

Please test and report your results. TIA.

Feedback from others using VisualC++ and the FLTK dll welcome, of course!


Link: http://www.fltk.org/str.php?L2632
Version: 1.3-current
Index: src/Fl_Input.cxx
===================================================================
--- src/Fl_Input.cxx    (revision 8712)
+++ src/Fl_Input.cxx    (working copy)
@@ -3,7 +3,7 @@
 //
 // Input widget for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -40,6 +40,15 @@
 #include <FL/fl_ask.H>
 #include "flstring.h"
 
+#if defined(FL_DLL)    // really needed for c'tors for MS VC++ only
+#include <FL/Fl_Float_Input.H>
+#include <FL/Fl_Int_Input.H>
+#include <FL/Fl_Multiline_Input.H>
+#include <FL/Fl_Output.H>
+#include <FL/Fl_Multiline_Output.H>
+#include <FL/Fl_Secret_Input.H>
+#endif
+
 #ifdef HAVE_LOCALE_H
 # include <locale.h>
 #endif
@@ -763,6 +772,51 @@
 : Fl_Input_(X, Y, W, H, l) {
 }
 
+/*
+  The following constructors must not be in the header file(s) if we
+  build a shared object (DLL). Instead they are defined here to force
+  the constructor (and default destructor as well) to be defined in
+  the DLL and exported (STR #2632).
+  
+  Note: if you change any of them, do the same changes in the specific
+  header file as well.  This redundant definition was chosen to enable
+  inline constructors in the header files (for static linking) as well
+  as those here for dynamic linking (Windows DLL).
+*/
+#if defined(FL_DLL)
+
+Fl_Float_Input::Fl_Float_Input(int X,int Y,int W,int H,const char *l)
+    : Fl_Input(X,Y,W,H,l) {
+  type(FL_FLOAT_INPUT);
+}
+
+Fl_Int_Input::Fl_Int_Input(int X,int Y,int W,int H,const char *l)
+    : Fl_Input(X,Y,W,H,l) {
+  type(FL_INT_INPUT);
+}
+
+Fl_Multiline_Input::Fl_Multiline_Input(int X,int Y,int W,int H,const char *l)
+    : Fl_Input(X,Y,W,H,l) {
+  type(FL_MULTILINE_INPUT);
+}
+
+Fl_Output::Fl_Output(int X,int Y,int W,int H, const char *l)
+    : Fl_Input(X, Y, W, H, l) {
+  type(FL_NORMAL_OUTPUT);
+}
+
+Fl_Multiline_Output::Fl_Multiline_Output(int X,int Y,int W,int H,const char *l)
+    : Fl_Output(X,Y,W,H,l) {
+  type(FL_MULTILINE_OUTPUT);
+}
+
+Fl_Secret_Input::Fl_Secret_Input(int X,int Y,int W,int H,const char *l)
+    : Fl_Input(X,Y,W,H,l) {
+  type(FL_SECRET_INPUT);
+}
+
+#endif // FL_DLL
+
 //
 // End of "$Id$".
 //
Index: src/Fl_Slider.cxx
===================================================================
--- src/Fl_Slider.cxx   (revision 8712)
+++ src/Fl_Slider.cxx   (working copy)
@@ -3,7 +3,7 @@
 //
 // Slider widget for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -31,6 +31,10 @@
 #include <math.h>
 #include "flstring.h"
 
+#if defined(FL_DLL)    // really needed for c'tors for MS VC++ only
+#include <FL/Fl_Hor_Slider.H>
+#endif
+
 void Fl_Slider::_Fl_Slider() {
   slider_size_ = 0;
   slider_ = 0; // FL_UP_BOX;
@@ -364,6 +368,25 @@
                h()-Fl::box_dh(box()));
 }
 
+/*
+  The following constructor must not be in the header file if we
+  build a shared object (DLL). Instead it is defined here to force
+  the constructor (and default destructor as well) to be defined
+  in the DLL and exported (STR #2632).
+  
+  Note: if you the ctor here, do the same changes in the specific
+  header file as well.  This redundant definition was chosen to enable
+  inline constructors in the header files (for static linking) as well
+  as the one here for dynamic linking (Windows DLL).
+*/
+
+#if defined(FL_DLL)
+
+Fl_Hor_Slider::Fl_Hor_Slider(int X,int Y,int W,int H,const char *l)
+       : Fl_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);}
+
+#endif // FL_DLL
+
 //
 // End of "$Id$".
 //
Index: FL/Fl_Output.H
===================================================================
--- FL/Fl_Output.H      (revision 8712)
+++ FL/Fl_Output.H      (working copy)
@@ -53,16 +53,21 @@
   and \\nnn notation for unprintable characters with the high bit set. It
   assumes the font can draw any characters in the ISO-Latin1 character set.
 */
-class Fl_Output : public Fl_Input { // don't use FL_EXPORT here !
+class FL_EXPORT Fl_Output : public Fl_Input {
 public:
   /**
     Creates a new Fl_Output widget using the given position,
     size, and label string. The default boxtype is FL_DOWN_BOX.
 
-    Inherited destrucor destroys the widget and any value associated with it.
+    Inherited destructor destroys the widget and any value associated with it.
   */
+
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+    Fl_Output(int X,int Y,int W,int H, const char *l = 0);
+#else
     Fl_Output(int X,int Y,int W,int H, const char *l = 0)
     : Fl_Input(X, Y, W, H, l) {type(FL_NORMAL_OUTPUT);}
+#endif
 };
 
 #endif 
Index: FL/Fl_Float_Input.H
===================================================================
--- FL/Fl_Float_Input.H (revision 8712)
+++ FL/Fl_Float_Input.H (working copy)
@@ -3,7 +3,7 @@
 //
 // Floating point input header file for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -39,15 +39,20 @@
   that only allows the user to type floating point numbers (sign,
   digits, decimal point, more digits, 'E' or 'e', sign, digits).
 */
-class Fl_Float_Input : public Fl_Input { // don't use FL_EXPORT here !
+class FL_EXPORT Fl_Float_Input : public Fl_Input {
 public:
   /**
-      Creates a new Fl_Float_Input widget using the given position,
+    Creates a new Fl_Float_Input widget using the given position,
     size, and label string. The default boxtype is FL_DOWN_BOX.
-  <P> Inherited destructor destroys the widget and any value associated with it
+
+    Inherited destructor destroys the widget and any value associated with it.
   */
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+  Fl_Float_Input(int X,int Y,int W,int H,const char *l = 0);
+#else
   Fl_Float_Input(int X,int Y,int W,int H,const char *l = 0)
     : Fl_Input(X,Y,W,H,l) {type(FL_FLOAT_INPUT);}
+#endif
 };
 
 #endif
Index: FL/Fl_Hor_Slider.H
===================================================================
--- FL/Fl_Hor_Slider.H  (revision 8712)
+++ FL/Fl_Hor_Slider.H  (working copy)
@@ -3,7 +3,7 @@
 //
 // Horizontal slider header file for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -33,10 +33,24 @@
 
 #include "Fl_Slider.H"
 
-class Fl_Hor_Slider : public Fl_Slider {
+/** Horizontal Slider class.
+
+  \see class Fl_Slider.
+*/
+class FL_EXPORT Fl_Hor_Slider : public Fl_Slider {
 public:
-    Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0)
-       : Fl_Slider(X,Y,W,H,l) {type(FL_HOR_SLIDER);}
+
+  /**
+    Creates a new Fl_Hor_Slider widget using the given position,
+    size, and label string.
+  */
+
+#if defined(FL_DLL)    // implementation in src/Fl_Slider.cxx
+  Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0);
+#else
+  Fl_Hor_Slider(int X,int Y,int W,int H,const char *l=0)
+    : Fl_Slider(X,Y,W,H,l) { type(FL_HOR_SLIDER); }
+#endif
 };
 
 #endif
Index: FL/win32.H
===================================================================
--- FL/win32.H  (revision 8712)
+++ FL/win32.H  (working copy)
@@ -110,7 +110,7 @@
 #endif // FL_LIBRARY || FL_INTERNALS
 
 FL_EXPORT Fl_Window* fl_find(Window xid);
-FL_EXPORT void fl_clip_region(Fl_Region);
+void fl_clip_region(Fl_Region);
 
 // most recent fl_color() or fl_rgbcolor() points at one of these:
 extern FL_EXPORT struct Fl_XMap {
Index: FL/Fl_Multiline_Output.H
===================================================================
--- FL/Fl_Multiline_Output.H    (revision 8712)
+++ FL/Fl_Multiline_Output.H    (working copy)
@@ -3,7 +3,7 @@
 //
 // Multi line output header file for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -48,13 +48,19 @@
 */
 class FL_EXPORT Fl_Multiline_Output : public Fl_Output {
 public:
+
   /**
-    Creates a new Fl_Multiline_Output widget using the given
-    position, size, and label string. The default boxtype is FL_DOWN_BOX
-    <P> Inherited destructor destroys the widget and any value associated with 
it.
+    Creates a new Fl_Multiline_Output widget using the given position,
+    size, and label string. The default boxtype is FL_DOWN_BOX.
+
+    Inherited destructor destroys the widget and any value associated with it.
   */
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+  Fl_Multiline_Output(int X,int Y,int W,int H,const char *l = 0);
+#else
   Fl_Multiline_Output(int X,int Y,int W,int H,const char *l = 0)
     : Fl_Output(X,Y,W,H,l) {type(FL_MULTILINE_OUTPUT);}
+#endif
 };
 
 #endif
Index: FL/Fl_Int_Input.H
===================================================================
--- FL/Fl_Int_Input.H   (revision 8712)
+++ FL/Fl_Int_Input.H   (working copy)
@@ -34,18 +34,24 @@
 #include "Fl_Input.H"
 
 /**
-  The Fl_Int_Input class is a subclass of Fl_Input
-  that only allows the user to type decimal digits (or hex numbers of the form 
0xaef).
+  The Fl_Int_Input class is a subclass of Fl_Input that only allows
+  the user to type decimal digits (or hex numbers of the form 0xaef).
 */
 class FL_EXPORT Fl_Int_Input : public Fl_Input {
 public:
   /**
     Creates a new Fl_Int_Input widget using the given position,
     size, and label string. The default boxtype is FL_DOWN_BOX.
-    <P>Inherited destructor Destroys the widget and any value associated with 
it.
+
+    Inherited destructor destroys the widget and any value associated with it.
   */
+
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+  Fl_Int_Input(int X,int Y,int W,int H,const char *l = 0);
+#else
   Fl_Int_Input(int X,int Y,int W,int H,const char *l = 0)
       : Fl_Input(X,Y,W,H,l) {type(FL_INT_INPUT);}
+#endif
 };
 
 #endif
Index: FL/Fl_Multiline_Input.H
===================================================================
--- FL/Fl_Multiline_Input.H     (revision 8712)
+++ FL/Fl_Multiline_Input.H     (working copy)
@@ -3,7 +3,7 @@
 //
 // Multiline input header file for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -57,10 +57,15 @@
   /**
     Creates a new Fl_Multiline_Input widget using the given
     position, size, and label string. The default boxtype is FL_DOWN_BOX.
-    <P>Inherited destructor destroys the widget and any value associated with 
it.
+
+    Inherited destructor destroys the widget and any value associated with it.
   */
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+  Fl_Multiline_Input(int X,int Y,int W,int H,const char *l = 0);
+#else
   Fl_Multiline_Input(int X,int Y,int W,int H,const char *l = 0)
     : Fl_Input(X,Y,W,H,l) {type(FL_MULTILINE_INPUT);}
+#endif
 };
 
 #endif
Index: FL/Fl_Secret_Input.H
===================================================================
--- FL/Fl_Secret_Input.H        (revision 8712)
+++ FL/Fl_Secret_Input.H        (working copy)
@@ -3,7 +3,7 @@
 //
 // Secret input header file for the Fast Light Tool Kit (FLTK).
 //
-// Copyright 1998-2010 by Bill Spitzak and others.
+// Copyright 1998-2011 by Bill Spitzak and others.
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -34,19 +34,27 @@
 #include "Fl_Input.H"
 
 /**
-  The Fl_Secret_Input class is a subclass of Fl_Input
-  that displays its input as a string of asterisks.  This subclass is
-  usually used to receive passwords and other "secret" information.
+  The Fl_Secret_Input class is a subclass of Fl_Input that displays its
+  input as a string of placeholders. Depending on the platform this
+  placeholder is either the asterisk ('*') or the Unicode bullet
+  character (U+2022).
+
+  This subclass is usually used to receive passwords and other "secret" 
information.
 */
 class FL_EXPORT Fl_Secret_Input : public Fl_Input {
 public:
   /**
     Creates a new Fl_Secret_Input widget using the given
     position, size, and label string. The default boxtype is FL_DOWN_BOX.
-    <P>Inherited destructor destroys the widget and any value associated with 
it.
+
+    Inherited destructor destroys the widget and any value associated with it.
   */
+#if defined(FL_DLL)    // implementation in src/Fl_Input.cxx
+  Fl_Secret_Input(int X,int Y,int W,int H,const char *l = 0);
+#else
   Fl_Secret_Input(int X,int Y,int W,int H,const char *l = 0)
     : Fl_Input(X,Y,W,H,l) {type(FL_SECRET_INPUT);}
+#endif
 };
 
 #endif
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to