Я перенес 32-битное приложение Motif (из SLES 10 SP1) в 64-битную SLES 12 SP3. Из-за проприетарных библиотек (XRT) мне пришлось компилироваться на 32-битной платформе (SLES 11 SP3) и статически связывать Motif (XRT уже был статически связан). Это работает нормально.
Затем я попытался запустить точно такие же двоичные файлы на SLES 12 SP4, и это также работает за исключением того, что файлы .xbm не отображаются. Ниже приведены примеры изображений с (SLES 12 SP3) и без (SLES 12 SP4) файла .xbm:
Я получаю ошибку:
Warning: Cannot convert string "range30Km32.xbm" to type Pixmap
Warning: Type conversion failed
Соответствующий код выглядит следующим образом:
#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 );
То, что я сделал до сих пор без успеха:
- Сравнил разницу между SLES 12 SP3 и SP4 соответствующих библиотек.
- Статически связывайте все возможные библиотеки (некоторые библиотеки не имеют вариантов * stati c).
- Проверьте Исходный код для X11 / Xt / Xm. (Эта часть взаимодействия между Xm и Xt особенно болезненна, чтобы обернуть мою голову.)
Есть идеи?