
                                LessTif FAQ
                                      
   This article contains the answers to some Frequently Asked Questions
   (FAQ) often seen in the LessTif mailing list and posted to the
   newsgroup [1]comp.windows.x.motif. It is posted to help reduce volume
   in the LessTif mailing list and to provide hard-to-find information of
   general interest.
     _________________________________________________________________
   
   This article includes answers to the following questions, which are
   loosely grouped into categories. Questions marked with a + indicate
   questions new to this issue; those with significant changes of content
   since the last issue are marked by !
   This FAQ was last updated on $Date: 2001/07/11 09:05:53 $
     _________________________________________________________________
   
                                  Contents
                                      
   [2]TOPIC: LessTif General Information
     * [3]What is LessTif?
     * [4]Where can I get LessTif?
     * [5]Who is developing LessTif?
     * [6]Can I use LessTif in my applications?
     * [7]Will LessTif be Motif1.2 Compliant?
     * [8]Will LessTif be Motif2.0 Compliant?
     * [9]Will LessTif be Motif2.1 Compliant?
     * [10]What about CDE?
     * [11]Is UIL (User Interface Language) supported?
     * [12]Is there a LessTif newsgroup?
     * [13]Is there a LessTif mailing list?
     * [14]Is there a LessTif mailing list digest?
     * [15]Is a LessTif mailing list archive available on FTP or WWW?
     * [16]What is LessDox?
     * [17]How can I obtain LessDox?
       
   [18]TOPIC: LessTif Installation
     * [19]What Platforms is LessTif on?
     * [20]Is there a pre-built library available for My Platform?
     * [21]Do I have to have Imake/xmkmf?
     * [22]Can I build a Shared Library?
     * [23]Can I build a Static Library?
     * [24]How do I build the makefiles?
     * [25]Why does it say I have X11r5 when I have r6 ?
     * [26]Why does the build fail with undefined symbols?
     * [27]Why does configure fail?
       
   [28]TOPIC: Running applications with LessTif
     * [29]Application fails to start
     * [30]Application can't load Shared Libraries
     * [31]Application doesn't work as expected
     * [32]Application crashes on 64bit architecture
       
   [33]TOPIC: LessTif Development Progress
     * [34]How complete is LessTif ?
     * [35]Is there any Documentation for LessTif ?
     * [36]How often is a release made ?
     * [37]What if I find a Bug ?
     * [38]What currently Works?
     * [39]Will Motif _Xm functions be implemented?
     * [40]Does LessTif support I18N?
     * [41]How to submit a bugfix/patch?
     * [42]What about memory leaks ?
     * [43]How to debug LessTif applications ?
       
   [44]TOPIC: Compiling Applications With LessTif
     * [45]! I installed LessTif but I can't compile apps with it. Help !
     * [46]! My application doesn't build. What do I do ?
     * [47]This app uses Imake but it won't build right.
     * [48]Can I use LessTif with C++ ?
       
   [49]TOPIC: Platform-specific Issues
     * [50]OS/2
          + [51]Why don't statically linked apps work?
          + [52]What about static libraries?
          + [53]What about "legacy" applications?
     * [54]Windows
          + [55]Why are there no DLLs on my Windows platform?
     _________________________________________________________________
   
                     TOPIC: LessTif General Information
                                      
     * What is LessTif?
       LessTif is a clone of the [56]Motif® toolkit. Currently LessTif is
       partially implemented with most of the API in place. Saying this a
       lot of the internal functionality is still missing.
       Compatibility can have several degrees, the ultimate one being
       binary compatibility. This is the one we're aiming for. This can
       be tested even today on most platforms on which shared libraries
       are supported : if you also have Motif® shared libraries, you can
       choose which library to use by setting an environment variable
       such as LD_LIBRARY_PATH prior to executing an application.
       The primary objectives have been to develop the widget code of the
       LessTif Toolkit. Intermittently, the window manager (mwm) and the
       combination of UIL compiler and libMrm are being worked on.
       Volunteers to advance one or more parts of LessTif development, or
       for writing documentation without an OSF, X/Open or The Open Group
       copyright on it, are always welcome.
     * Where can I get LessTif?
       You can get it over the Internet at several locations. They're
       listed on our web site at [57]http://www.lesstif.org, which is one
       of the places to get it.
       The same web pages can point you to quite a few [58]CD-ROM
       manufacturers which put a version of LessTif on some of their
       products. Many free Unix (RedHat, Debian, SuSE, Walnut Creek
       FreeBSD, ...) are among them.
     * Who is developing LessTif?
       A few Internet based individuals as listed in [59]core.html.
       Nobody is paid to work on it, all is effort by volunteers.
       Look for an all-time list of authors in the AUTHORS file in the
       LessTif distribution, while CREDITS acknowledges the contributions
       of various other people.
       Keeping a list of developers for each widget is not really
       possible mainly because the we're not fanatic about ownership of a
       widget. We do keep in touch enough to know who's messing with what
       so we don't overlap too much.
     * Can I use LessTif in my applications?
       The odds of your application running fairly well with LessTif are
       pretty good.
       You should be able to compile and run your code, how well it works
       is another matter... If it doesn't, then we're very interested in
       hearing about what doesn't work and why (we can't fix bugs that we
       don't know about), and we're even more interested in a fix.
       If your favorite application does work, please tell us so we add
       it to the list of apps known to work.
     * Will LessTif be Motif1.2 Compliant?
       Yes, this is the first major step.
       Up to now we are very close, all interfaces are in place, we might
       only have to fight against some remaining bugs ...
       In early 1997 however, someone asked whether submissions for 2.0
       or CDE widgets would be accepted.
       Of course !
       Therefore, we expanded the source directory tree to make it easy
       to add new stuff, and to build several versions of the library
       (and the corresponding tools). So if anybody has a widget, or an
       application, to offer which can advance us in the 2.x or CDE
       areas, please E-mail us.
       Somewhere along 1997 we actually started building 2.0 compliant
       widgets. More of them are needed though.
     * Will LessTif be Motif2.0 Compliant?
       Probably not fully. Since 2.0 is now gone and has been replaced by
       the OpenGroup's Motif version 2.1 we will also no longer focus on
       a 2.0 compatible release. Especially WRT CSText and the C++
       extensions - unless someone will donate implementations of these
       we will probably never get them!
       See also in [60]Will LessTif be Motif1.2 Compliant?.
     * Will LessTif be Motif2.1 Compliant?
       Yes, even though we're convinced that this might still take some
       time. Some of the new features in 2.x are not exactly easy stuff !
       Having some of the widgets implemented can make us get away with a
       lot of stuff : some applications just need one of the new widgets.
       If applications use some of the flashy new features such as
       renderings, ...
     * What about CDE?
       We've made room for CDE compatible widgets and applications, and
       we should probably talk to the people in the eXode project, who
       are working on this. Look up their stuff at
       [61]http://www.simplicity.net/exode (offline?).
       We did talk to them. They basically don't want to use too much of
       the 2.* stuff (some of it is rather buggy in OSF releases); also
       they really want the core of eXode to run on top of LessTif.
       Meanwhile we also have to make a similar statement as in the
       answer for question [62]Will LessTif be Motif2.0 Compliant?:
       Our main focus is meanwhile Motif 2.1 compliance!
     * Is UIL (User Interface Language) supported?
       Not really. Though there is some old code in place already it's
       unlikely you succeed with a project using it.
       Actually there are two versions around, one is built as uil while
       the othe executable is named newuil. The latter uses libUil as
       opposed to the older one.
     * Is there a LessTif newsgroup?
       No.
       Regularly, questions about LessTif (or about any free Motif®)
       clone are asked in [63]comp.windows.x or [64]comp.windows.x.motif
       .
     * Is there a LessTif mailing list?
       Yes there is. How to get on it is described on this [65]web page.
     * Is there a LessTif mailing list digest?
       Yes. How to get on it is described on the [66]web page.
     * Is a LessTif mailing list archive available on FTP or WWW?
       Yes!
       Please check out the [67]mailinglists page on our website.
     * What is LessDox?
       LessDox is the shortened version of the LessTif Documentation
       Project. Any previous reference to "LDP" is now dropped because of
       the conflict with the "Linux Documentation Project".
     * How can I obtain LessDox?
       Currently you can obtain LessDox from the LessTif [68]website.
       Nothing has happened to LessDox in a long time, we would love some
       people to write free documentation describing the LessTif widget
       set.
     _________________________________________________________________
   
                        TOPIC: LessTif Installation
                                      
     * What Platforms is LessTif on?
       A more accurate list is available in an [69]extraneous file.
       Here's an excerpt, with version numbers stripped for brevity:
       Linux, FreeBSD, NetBSD, OpenBSD, BSDi (BSD/OS), Sun (SunOS,
       Solaris), MkLinux, OS/2, AIX, Digital UNIX/Compaq Tru64, HP/UX,
       (Windows NT, Windows 95 (with cygwin32)
     * Is there a pre-built library available for My Platform?
       Might be, we started doing that as of early March, 1997. The core
       team (and some other brave guys) are providing compiled images.
       Currently we don't have a document describing how to install them,
       but they're there for Linux, FreeBSD, OS/2. The [70]INSTALL file
       found in the source distribution and on the web explains how to
       install it.
       Note we'll only refresh these binary distributions at release time
       (at least for major releases).
       Make sure that you do get a binary version, if that's what you're
       interested in; not the source distribution.
       We also have a list of [71]CD-ROMs which include LessTif
       distributions. For several platforms there are also third-party
       binary packages available. Further information can be found in
       [72]INSTALL and on our [73]download pages.
     * Do I need to have imake/xmkmf?
       No. LessTif used to work with those, but they became more of a
       problem than a solution, so we switched to GNU autoconf, which has
       the additional capability to find out many many things about the
       target platform while auto-configuring itself.
       Around December 1997 we also started to work with libtool and
       automake, two more free tools. They should solve the portability
       problems with building shared libraries on multiple platforms for
       us. You'll find this in distributions of LessTif starting with
       release 0.85.
     * Can I build a Shared Library?
       Yes, you can on many platforms. They include Linux, FreeBSD,
       HP-UX, SunOS, Solaris, Digital Unix, ...
       We use libtool for keeping the complexities of building and
       installing shared libraries out of LessTif. Therefore, if LessTif
       doesn't build a working shared library on some platform, you may
       want to check whether libtool already supports this platform.
       Contact the libtool mailing list if you're interested in details
       about the platforms supported by libtool. A link to libtool
       homepage is on our [74]links page.
     * Can I build a Static Library?
       Even for this we use libtool; but yes, you can on all platforms we
       can think of.
       By default building these is disabled. Check out the [75]INSTALL
       document how to actually build them (hint: you have use a
       configure switch).
     * How do I build the makefiles?
       LessTif is now using the GNU configure system so (usually) all you
       need to do is type
   ./configure
   make
       That's all!
       For more information on this topic check out the [76]INSTALL
       document.
     * Why does it say I need X11r5 or higher when I have r6 ?
       Several people have reported build problems; the configure script
       looks for an X distribution and then checks whether it is X11R5 or
       X11R6.
       On some systems the configure script stops, saying
configure: error: You must have X11 Revision 5 or higher to compile LessTif
       while the system actually has X11R6.
       Apparently this has to do with installations of Linux, in which
       the include files (under /usr/include) often contain symbolic
       links to the source directories (either on disk or on CD-ROM). In
       such a situation, if one either removes the CD-ROM, or cleans up
       /usr/src, the effect will be dangling symbolic links under
       /usr/include which confuse our configure script.
       The solution is obvious : make sure that your include files don't
       contain symbolic links to nonexistent files.
       Another possibility is that you simply forgot to install the X11
       development package (e.g. X11-devel RPM) so that the related
       headers are not yet installed on your system.
     * Why does the build fails with undefined symbols?
       We might have screwed up, of course.
       On the other hand, please make sure that you've built the entire
       distribution with the same configuration.
       Not clear ? After running the "configure" command with its
       options, you should ideally run "make clean". Otherwise e.g.
       clients/Motif-1.2/mwm/Makefile may be configured such that it
       looks for stuff that isn't there in lib/Xm/* .
     * Why does configure fail?
       There are some circumstances when configure fails to run, or
       produces wrong results:
          + You have an old (broken/incomplete) config.cache
            (config.status) file left over. Delete those! Or if you have
            a recent set of the auto* tools installed (See
            [77]INSTALL.html) run the CVSMake script, and then configure
            again.
          + configure (and the generated Makefiles) won't work if the
            build directory resides in a path which has embedded blanks,
            e.g. "/usr/work/Fine Software". The simple and only solution
            is to move it to another path.
          + If you get some strange results also check whether you have
            some strange settings in the environment which may cause
            those. Some related variables are CC, CFLAGS, LIBS, ...
     _________________________________________________________________
   
                  TOPIC: Running applications with LessTif
                                      
     * Application fails to start
       Your application fails to start and you get a quite
       "sophisticated" error message like the following:
Error: PANIC: no realize procedure specified for this widget.
       or
Error: attempt to add non-widget child "DropSiteManager" to parent
       "xmfoo" which supports only widgets
       We've seen this happen when the order of libraries upon linking
       was incorrect. The correct order is :
-lXm -lXt -lX11
       (see also [78]Question 5.1)
       If you built this application please link it again, otherwise
       notify the maintainer.
       Check out _LtCheckClassOfVendorShell() and _LtXmFixupVendorShell
       in lib/Xm/Vendor.c. Also related messages should be in the
       [79]mailinglist archive. The following explanation was a
       submission from Martin Simmons:
       
     The linking order problems are caused by these two symbols:
vendorShellClassRec
vendorShellWidgetClass

     which are defined *AND* referenced in both -lXm and -lXt. Somehow
     you have to convince the linker to use the -lXm definitions to
     satisfy the references in both -lXm and -lXt. The -lXt definitions
     should not be used. For typical elf-based dynamic loaders (Linux,
     Solaris etc), this is done by passing '-lXm -lXt' to the linker,
     which adds them both as SO_NEEDED sections to the executable. At
     runtime, the dynamic loader collects symbols from each SO_NEEDED
     section in the order it finds them, discarding symbols it already
     knows, and then fixes the references in all the loaded libraries
     using that combined symbol table. For typical static linkers, it is
     also done by specifying '-lXm -lXt' to the linker. In this case,
     the linker extracts some .o's from -lXm which contain
     user-referenced symbols and eventually ends up extracting
     -lXm:Vendor.o due to internal references in -lXm. It then does the
     same for -lXt, but doesn't need to extract -lXt:Vendor.o because it
     doesn't define anything that is still undefined.
     * Application can't load Shared Libraries
       If you get a message like
foo: error in loading shared libraries
libXm.so.1: cannot open shared object file: No such file or directory
       then you did not tell your system where to look for the shared
       libraries you have (hopefully) installed. The [80]INSTALL file
       describes how to this.
     * Application doesn't work as expected
       If you build the application make sure you followed the
       instructions in section [81]TOPIC: Compiling Applications With
       LessTif. Also you may have discovered a remaining bug or missing
       feature in LessTif. See section [82]4.3 What if I find a Bug ?
     * Application crashes on 64bit architecture
       "Somehow" LessTif does still have problems to work properly on
       64bit platforms, e.g. those based on the alpha processor. There's
       not a simple known work-around, but we are working to get this
       fixed! As of releases above 0.92.26 we hope to iron out another
       category of crashes. We're convinced that we will soon provide the
       same quality as on 32bit platforms!
     _________________________________________________________________
   
                    TOPIC: LessTif Development Progress
                                      
     * How complete is LessTif ?
       Hard to say really. Depends on how much credit you give us.
       Actually most LessTif widgets work somewhat. Many work fairly
       well. Things like traversal and focus handling have been worked
       on, but probably aren't really all that functional yet.
       The menu system is quickly losing its child diseases (occasionally
       freezing the X server with grabs). If you're not in a rush when
       working the menus, the odds are low that you'll get in much
       trouble. Also dragging in the menus will get you in trouble faster
       than clicking.
       In short, if something does not work quite right, send us an
       [83]email and we'll try to help you as soon as we possibly can! In
       fact telling us about your problem is the fastest way to get your
       app to work with LessTif. Recommended !
     * Is there any documentation for LessTif ?
       Yes the LessTif Documentation Project (LessDox) check out the
       LessDox home page at:
       [84]http://www.lesstif.org/Lessdox/lesstif.html
     * How often is a release made ?
       Starting December 1996 we plan to make intermediary releases every
       month or so, and "real" releases every three months or so. The
       0.75 release was made available around December 11, 1996. In April
       2000 0.90 was released. See [85]versions.html for a list of all
       released versions.
       [86]release-policy.html has more on this topic.
       In between releases, you can always grab get our latest
       development sources from our [87]CVS repository.
     * What if I find a Bug ?
       Bug reports are very welcome, and we'll do our best to get the
       fixes out as quick as possible.
       The [88]web site and all distributions contain a [89]write-up on
       how to submit bug fixes or reports.
     * What currently runs ?
       DDD, Mosaic-2.7, NEdit, ...
       Look at the [90]web site for a more accurate and timely [91]list.
     * Will Motif _Xm functions be implemented?
       Sure they will. Many of them are implemented already.
       This was not easy though. The _Xm* functions seem to be
       undocumented in Motif 1.2 therefore we will make every effort to
       implement the functions as best we can.
       One of our sources of information was "Writing Your Own OSF/MOTIF
       Widgets" by McMinds and Whitty, kindly donated to us by Linux
       International.
       Many of the _Xm* functions are exposed in OSF/Motif® 2.0/2.1 where
       they changed names into Xme*.
     * Does LessTif support I18N?
       Two widgets that accept text input (namely XmText and XmTextField)
       do support it, but they don't feature multibyte support.
       This means you can use sequences such as Multi_key+c+o to get ©,
       Multi_key+n+~ to get the ñ, etc.. These work because they're part
       of the ISO Latin 1 character set, which is based on one-byte
       representations.
       The XmText and XmTextField widgets can handle input methods, as
       described above, but they don't have multibyte support. This means
       that Asian input methods which work with a multi-byte
       representation of a character will not work (yet).
       The XmIm*() API is work in progress, this is probably not a
       problem for you as we have yet to discover an application that
       uses it.
     * How to submit a bugfix/patch?
       This topic is covered in an extraneous [92]document which is also
       distributed in plain ASCII format (BUG-REPORTING).
     * What about memory leaks ?
       Obviously we don't like memory leaks in LessTif. A couple of tests
       have been done with commercial memory analysis tools, some of the
       apps in the tests/ tree help tracking some leaks as well.
       We believe we're not doing really bad. In fact we did run some
       simple comparisons with official Motif 1.2.4 implementations which
       showed LessTif was even leaking less memory!
       One package which can help you (and us) in tracking memory
       problems both in your application and in LessTif, is dmalloc, a
       library which can be obtained from [93]dmalloc.com .
       You can compile LessTif itself with dmalloc by using the
       --with-dmalloc option to the "configure" command.
       Dmalloc is freely available software, but please note the license
       which is different from most other free software licenses.
     * How to debug LessTif applications ?
       We have some documents which should help to track down bugs in
       LessTif-based applications. [94]BUG-HUNTING.html describes some
       specifics of LessTif's built-in debugging facilities while
       [95]bugs.html covers more general the topic of debugging X11
       applications.
     _________________________________________________________________
   
                 TOPIC: Compiling Applications With LessTif
                                      
     * I installed LessTif but I can't compile apps with it. What's wrong
       ?
       You may have an application that's not error-free; or (more
       likely) one which needs configuration for your site, computer
       platform, etc.
       It would be a good idea to consult the compilation and
       installation guidelines for that application.
       If it's not a bug within the application it probably has to do
       with your compiler options. If it's indeed that, there are several
       possibilities.
       In the examples we'll give now, we'll be using some installation
       directories that may differ from your installation. Please adjust
       your compilation parameters accordingly, don't try to fix your
       installation so it matches our examples. In our examples, X has
       been installed in /usr/X11R6 and LessTif has been installed in
       /usr/lesstif.
       Compilation of applications is really a two-step process :
         1. compiling all sources to object files
         2. linking the object files together
       The compilation phase needs to know where to find include files.
       These are files that are referenced in the C (or C++) sources of
       your programs as
#include <Xm/Xm.h>
       and you should find them on your system in a couple of directories
       under /usr/lesstif/Motif1.2/include or
       /usr/lesstif/Motif2.0/include. Specifically the file mentioned
       above should show up as /usr/lesstif/Motif1.2/include/Xm/Xm.h or
       /usr/lesstif/Motif2.0/include/Xm/Xm.h
       For your compiler to find these files, it needs to be told where
       to look. Using the examples above, the flag needed would be
       -I/usr/lesstif/include . Note that you need to tell the compiler
       the same thing about the X Window System include files, you need
       to do that by using the -I/usr/X11R6/include flag. So together
       this gives
  -I/usr/X11R6/include -I/usr/lesstif/include
       The second step, linking all the source files together, requires
       similar flags which are shown [96]below.
     * My application doesn't build. What do I do ?
       If your application doesn't build, this could have several
       reasons. Some are discussed for the question [97]"I installed
       LessTif but I can't compile apps with it. What's wrong ?"!
       If the linking process fails, this probably means you didn't
       specify some library, or the required libraries aren't present on
       your system. Error messages indicating this are a long list of
       undefined symbols most of which have a name with an identical
       prefix, such as Xm. The linker needs to know where the libraries
       are, and additionally you need to tell it which libraries to
       include in the link process.
       Using the example outlined [98]above, we'd need to use the flags
  -L/usr/X11R6/lib -L/usr/lesstif/lib
       for the linker to know where to look, and
  -lXm -lXt -lX11
       to know which libraries to use.
       In this quite simplified example you might get away with using
       those linker flags:
  -L/usr/X11R6/lib -L/usr/lesstif/lib -lXm -lXt -lX11
       Note that the order of the libraries is usually important (see
       below), so try to do it right from the beginning!
       We didn't list additional libraries which are often required. e.g.
       our Motif® 2.1 compatible libXm requires an additional -lXp
       -lXext. Therefore we list some prefixes and the related library,
       so you can check which library you are missing.
       
   Prefix Linker Command
   Xt -lXt
   Xmu -lXmu
   Sm -lSM
   Ice -lICE
   Xp -lXp
   Xdbe, Xext, XShape -lXext
   Xm -lXm
   Mrm -lMrm
   Dt -lDt
   
       The order in which you should specify these options is
-lDt -lMrm -lXm -lXt -lXmu -lXp -lXext -lX11 -lSM -lICE
       Of course not all of these libraries are always necessary, but in
       some cases even more libraries may be required (-lsocket is
       another candidate here). Also make sure the linker is able to find
       the libs, e.g. it may be necessary to add an -L/usr/lesstif/lib or
       similar.
       Once more, the compilation and installation guidelines for the
       application probably tell you which libraries to link with.
       Finally, please make sure that you have the X development packages
       installed on your system, not only the X "user stuff". Forgetting
       to install the development system could result in messages like
       Xm/Xm.h : cannot open file, or -lXt: library not found.
     * This app uses Imake but it won't build right.
       Imake is a tool which is included in the X Window System
       distributions. It is an extra layer above Makefiles (processed by
       the make program) which attempts to make the build process more
       system independent.
       Nowadays more and more applications use GNU autoconf and GNU
       automake for the same purpose.
       The imake program process an Imakefile and turns it into a
       Makefile. Often the Imakefile uses some template file that comes
       with the application, to specify additional options.
       If you use imake directly to create the Makefile, then this will
       probably not work right, because you need to tell imake to read
       the LessTif configuration files. The mxmkmf program calls imake
       with the right parameters, so just using this should help.
       It is also possible that the Imakefile file or some file used by
       it overrides some of LessTif's parameters. Please check whether
       EXTRA_INCLUDES, XMLIB, or XmClientLibs are overruled in these
       files. If they are, then this is probably the cause of the
       problem.
     * Can I use LessTif with C++ ?
       You sure can. There really are two ways. You can use it directly,
       or through one of the C++ wrappers for Motif. Much of this is
       discussed in the Motif FAQ which can be found at Ken Lee's website
       at [99]http://www.rahul.net/~kenton . We're copying a tiny bit of
       information from one of the FAQ issues here.
       Using LessTif directly with C++ prompts the question on how to use
       class member functions as callbacks. Here's part of Ken's answer :
       There are three common user problems with C++ callbacks.
          + First, make sure you use the correct function prototype for
            the function declarations.
          + Second, the callback function must be declared as a static
            member of the class.
          + Third, when registering it with XtAddCallback(), you must use
            its full signature.
       Here's an example :
    class MyClass {
      void createWidgets();
      static void myButtonCB(Widget, XtPointer, XtPointer);
    };

    void MyClass::createWidgets() {
      w = XtCreatePushButton(...);
      XtAddCallback(w, XmNactivateCallback, &MyClass::myButtonCB, (XtPointer) t
his);
    }

    void myButtonCB(Widget w, XtPointer clientData, XtPointer callData) {
      MyClass *myclass = (MyClass *) clientData;
    }
       Note that the "this" pointer is used as the client data. This
       technique is popular, but not required.
       Motif++ is one of the C++ wrappers for Motif/LessTif. It has a
       nice tutorial summarizing mechanisms. (used to be available from
       [100]ftp://src.doc.ic.ac.uk/packages/motif++/, but currently it
       isn't. Try ftp-search on it!)
     _________________________________________________________________
   
                      TOPIC: Platform-specific Issues
                                      
     * OS/2
          + Why don't statically linked apps work?
            Well, you need to call _LtXmFixupVendorShell() at the
            beginning of main(), or at least before accessing the LessTif
            library somehow. Note that this call was not always exported
            from earlier versions of the Xm*.dlls. It does and will
            always exist from version 0.92.26 and above.
            For further technical details check out the source code in
            [101]lib/Xm/Vendor.c and read the answer to [102]"Application
            fails to start".
          + What about static libraries?
            Well, there is (almost) no demand for static libraries so
            far. If you want them anyway and are capable to deal with the
            problems as described in the in [103]question above, then you
            may retrieve the [104]Makefile set for OS/2 and build the
            static libs on your own.
          + What about "legacy" applications?
            Old programs may still be linked against Xm.dll while any new
            one should be linked against the libraries following the new
            naming scheme, i.e. Xm_12.dll, Mrm_20.dll, etc.
            For this legacy stuff there was a "final" version of the
            Motif 1.2 compatible [105]Xm.dll built as of LessTif version
            0.91.8.
            If you really need a more up-to-date library Xm.dll either
            try the quick approach of renaming the dll or patching the
            executable (both not really recommended) or built one from
            scratch. In fact you just need to simply tweak the linker
            definition file and the according Makefile.
     * Windows
          + Why are there no DLLs on my Windows platform?
            This question is addressed within our [106]Installation
            Instructions.
     _________________________________________________________________
   
   
    [107]Valid HTML 3.2! [108]Feedback
    Last modified on $Date: 2001/07/11 09:05:53 $

References

   1. news:comp.windows.x.motif
   2. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC1
   3. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.0
   4. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.1
   5. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.2
   6. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.3
   7. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.4
   8. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.5
   9. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.14
  10. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.6
  11. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.13
  12. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.7
  13. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.8
  14. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.9
  15. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.10
  16. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.11
  17. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.12
  18. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC2
  19. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.0
  20. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.1
  21. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.2
  22. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.3
  23. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.4
  24. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.6
  25. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.7
  26. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.8
  27. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU2.9
  28. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC3
  29. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU3.0
  30. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU3.1
  31. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU3.2
  32. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU3.3
  33. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC4
  34. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.0
  35. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.1
  36. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.2
  37. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.3
  38. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.4
  39. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.5
  40. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.6
  41. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.7
  42. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.8
  43. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.9
  44. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC5
  45. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.0
  46. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.1
  47. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.2
  48. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.3
  49. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC6
  50. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#Platform_OS2
  51. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU6.0
  52. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU6.1
  53. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU6.2
  54. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#Platform_WINDOWS
  55. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU6.3
  56. http://www.opengroup.org/tech/desktop/motif/
  57. http://www.lesstif.org/
  58. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/cdrom.html
  59. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/core.html
  60. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.4
  61. http://www.simplicity.net/exode
  62. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU1.5
  63. news:comp.windows.x
  64. news:comp.windows.x.motif
  65. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/lists.html
  66. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/lists.html
  67. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/lists.html
  68. http://www.lesstif.org/
  69. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/platforms.html
  70. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html
  71. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/cdrom.html
  72. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html#Binary_distributions_of_LessTif
  73. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/download.html
  74. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/links.html#tools
  75. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html
  76. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html
  77. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html#LessTif_from_CVS
  78. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.1
  79. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/lists.html
  80. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html
  81. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#TOPIC5
  82. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU4.3
  83. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/feedback.html
  84. http://www.lesstif.org/Lessdox/lesstif.html
  85. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/versions.html
  86. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/release-policy.html
  87. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/cvs.html
  88. http://www.lesstif.org/
  89. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/bugs.html
  90. http://www.lesstif.org/
  91. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/apps.html
  92. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/bugs.html
  93. http://dmalloc.com/
  94. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/BUG-HUNTING.html
  95. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/bugs.html
  96. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.1
  97. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.0
  98. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU5.0
  99. http://www.rahul.net/~kenton
 100. ftp://src.doc.ic.ac.uk/packages/motif++/
 101. http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/lesstif/lesstif/lib/Xm/Vendor.c
 102. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU3.0
 103. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/FAQ.html#QU6.1
 104. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html#compile_OS2
 105. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html#compile_OS2
 106. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/INSTALL.html#compile_Windows
 107. http://validator.w3.org/check/referer
 108. file://localhost/home/danny/tmp/ltrel/lesstif/doc/www.lesstif.org/feedback.html
