I have ported a 32-bit Motif application (from SLES 10 SP1) to 64-bit SLES 12 SP3. Because of proprietary libraries (XRT) I have been forced to compile on a 32-bit platform (SLES 11 SP3) and link Motif statically (XRT was already statically linked). This works fine.
I then tried to run the exact same binaries on SLES 12 SP4, and this also works except that .xbm files are not rendered. See below for example images with (SLES 12 SP3) and without (SLES 12 SP4) the .xbm file rendered:
The error I get is:
Warning: Cannot convert string "range30Km32.xbm" to type Pixmap
Warning: Type conversion failed
The relevant code looks like this:
#define RES_CONVERT( res_name, res_value) \
XtVaTypedArg, (res_name), XmRString, (res_value), strlen(res_value) + 1
XtVaSetValues(MwRscRange30LBL,
RES_CONVERT( XmNlabelPixmap, "range30Km32.xbm" ),
NULL );
What I have done so far without success is:
- Compared the difference between SLES 12 SP3 and SP4 of relevant libraries.
- Link statically all possible libraries (some libraries don't have static variants).
- Inspect the source code for X11/Xt/Xm. (This part of the interaction between Xm and Xt is particularly painful to wrap my head around.)
Any ideas?