0

我已将 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 文件:

.xbm 文件呈现 .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 );

到目前为止我所做的没有成功的是:

  1. 比较了相关库的 SLES 12 SP3 和 SP4 之间的差异。
  2. 静态链接所有可能的库(一些库没有静态变体)。
  3. 检查 X11/Xt/Xm 的源代码。(Xm 和 Xt 的这部分交互,特别让我头疼。)

有任何想法吗?

4

0 回答 0