[X-Motif] Linking order of X libraries

SYMPTOM/SOLUTION TEMPLATE:
PRODUCT: X Motif
OP/SYS: Linux Fedora Core 6
COMPONENT: X libraries
SOURCE: Philippe Vouters Fontainebleau/France
LOW-COST HIGH-TECH: http://techno-star.fr
SYMPTOM(S) or PROBLEM(S): On Linux Fedora Core 6, linking -lXt -lXm -lX11 causes the following run-time message: $ make -f makefile cc -c -w -g testy.c cc -o testy testy.o -lXt -lXm -lX11 $ ./testy Warning: XmManager ClassInitialize: XmeTraitSet failed Error: attempt to add non-widget child "DropSiteManager" to parent "testy" which supports only widgets
SOLUTION or COMPAQ RESPONSE: Change the link order to -lXM -lXt -lX11
ANALYSIS: This error is usually a result of using the Xt VendorShell instead of the Xm VendorShell, caused by linking ... -Xt -lXm -lX11.
PROGRAM: #include <Xm/TextF.h> #include <Xm/MainW.h> #include <Xm/LabelG.h> #include <Xm/PushB.h> #include <Xm/Form.h> #include <Xm/ScrolledW.h> #include <Xm/RowColumn.h> Widget toplevel, bb,bb2, Shell; Widget p1, p2, p3, p4, p5, p6, p7, p8, p9; Widget text; Window win; Arg arg[17]; int n; int ind = 0; int ind2 = 0; int ind3 = 0; #define MAXLOOP 3 Widget tf1[9]; XmString cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8, cs9; char *tf1_names[] = {"text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9"}; static char drawTranslations[] = "#override <Key>: self-insert() \n\ <Key>osfDelete: delete-next-character()\n\ <Key>osfLeft: backward-character()\n\ <Key>osfRight: forward-character()\n\ <Key>osfBackSpace: delete-previous-character()\n\ Shift <Key>Tab: prev-tab-group()\n\ <Key>Tab: next-tab-group()"; XtAppContext app; int window_opened = FALSE; int window_created = FALSE; XtIntervalId timer; void ProcessTraversal (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { XtVaSetValues (p3, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p4, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p7, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p9, XtVaTypedArg, XmNforeground,XmRString, "black", 6, NULL); timer = XtAppAddTimeOut (app, 1000, ProcessTraversal, NULL); if (window_opened) { ind ++; if (ind ==9) ind =0; XmProcessTraversal (tf1[ind], XmTRAVERSE_CURRENT); } } void OpenWindow (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { if ((window_created == TRUE) && (window_opened == FALSE)) { window_opened = TRUE; XtMapWidget (Shell); } } void CloseWindow (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { if ((window_created == TRUE) && (window_opened == TRUE)) { window_opened = FALSE; XtUnmapWidget (Shell); } } void CreateWindow (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { if (window_created == FALSE) { window_opened = TRUE; window_created = TRUE; XtRealizeWidget (Shell); } } void DestroyWindow (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { if (window_created == TRUE) { window_opened = FALSE; window_created = FALSE; XtUnrealizeWidget (Shell); } } void StartP (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { int i; if (window_created == TRUE) { XtVaSetValues (p3, XtVaTypedArg, XmNforeground,XmRString, "black", 6, NULL); XtVaSetValues (p4, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p7, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p9, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); timer = XtAppAddTimeOut (app, 1000, StartP, NULL); if (window_opened) { window_opened = FALSE; XtUnmapWidget (Shell); } else { window_opened = TRUE; XtMapWidget (Shell); } } } void LooseFocus (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { } void StartPCD (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { int i; XtVaSetValues (p3, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p4, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p7, XtVaTypedArg, XmNforeground,XmRString, "black", 6, NULL); XtVaSetValues (p9, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); if (window_created == FALSE) { window_created = TRUE; XtRealizeWidget (Shell); } timer = XtAppAddTimeOut (app, 100, StartPCD, NULL); if (window_opened) { ind++; if (ind == 9) { ind =0; if (ind2 == MAXLOOP) { ind2 =0; XtUnmapWidget (Shell); window_opened = FALSE; } else { XmProcessTraversal (tf1[ind], XmTRAVERSE_CURRENT); ind2++; } } else { XmProcessTraversal (tf1[ind], XmTRAVERSE_CURRENT); } } else { ind3++; ind =0; ind2 =0; if (ind3 == 9) { ind3 =0; XmProcessTraversal (tf1[ind], XmTRAVERSE_CURRENT); window_created = TRUE; window_opened = TRUE; XtMapWidget (Shell); } } } void StopP (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { if (timer != 0) { XtVaSetValues (p3, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p4, XtVaTypedArg, XmNforeground,XmRString, "black", 6, NULL); XtVaSetValues (p7, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtVaSetValues (p9, XtVaTypedArg, XmNforeground,XmRString, "white", 6, NULL); XtRemoveTimeOut (timer); } } void Quit (w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { exit(0); } main (argc, argv) int argc; char *argv[]; { XmString cs, cs2, cs3, cs4; XtTranslations xlations; int i; int j; toplevel = XtVaAppInitialize (&app, "Hello", NULL, 0, &argc, argv, NULL, NULL); bb = XtCreateManagedWidget ("XTBB", xmBulletinBoardWidgetClass, toplevel, NULL, 0); n =0; XtSetArg (arg[n], XmNwidth, 420); n++; XtSetArg (arg[n], XmNheight,220); n++; XtSetValues (bb, arg, n); XtVaSetValues (bb, XtVaTypedArg, XmNbackground,XmRString, "red", 4, NULL); /*********************************************************/ p1 = XtCreateManagedWidget ("PUSHB1", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs1 = XmStringCreate("MAP", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs1); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 10); n++; XtSetArg (arg[n], XmNy, 10); n++; XtSetValues (p1, arg, n); XtAddCallback (p1, XmNactivateCallback, OpenWindow, NULL); /*********************************************************/ p2 = XtCreateManagedWidget ("PUSHB2", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs2 = XmStringCreate("UNMAP", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs2); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 100); n++; XtSetArg (arg[n], XmNy, 10); n++; XtSetValues (p2, arg, n); XtAddCallback (p2, XmNactivateCallback, CloseWindow, NULL); /*********************************************************/ p3 = XtCreateManagedWidget ("PUSHB3", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs3 = XmStringCreate("START M/Unmap", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs3); n++; XtSetArg (arg[n], XmNwidth, 180); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 10); n++; XtSetArg (arg[n], XmNy, 110); n++; XtSetValues (p3, arg, n); XtAddCallback (p3, XmNactivateCallback, StartP, NULL); /*********************************************************/ p4 = XtCreateManagedWidget ("PUSHB4", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs4 = XmStringCreate("STOP", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs4); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 210); n++; XtSetArg (arg[n], XmNy, 110); n++; XtSetValues (p4, arg, n); XtAddCallback (p4, XmNactivateCallback, StopP, NULL); /*********************************************************/ p5 = XtCreateManagedWidget ("PUSHB5", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs5 = XmStringCreate("CREATE", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs5); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 210); n++; XtSetArg (arg[n], XmNy, 10); n++; XtSetValues (p5, arg, n); XtAddCallback (p5, XmNactivateCallback, CreateWindow, NULL); /*********************************************************/ p6 = XtCreateManagedWidget ("PUSHB6", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs6 = XmStringCreate("DESTROY", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs6); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 300); n++; XtSetArg (arg[n], XmNy, 10); n++; XtSetValues (p6, arg, n); XtAddCallback (p6, XmNactivateCallback, DestroyWindow, NULL); /*********************************************************/ p7 = XtCreateManagedWidget ("PUSHB7", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs7 = XmStringCreate("START M/Un Trav", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs7); n++; XtSetArg (arg[n], XmNwidth, 180); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 10); n++; XtSetArg (arg[n], XmNy, 60); n++; XtSetValues (p7, arg, n); XtAddCallback (p7, XmNactivateCallback, StartPCD, NULL); /*********************************************************/ p8 = XtCreateManagedWidget ("PUSHB8", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs8 = XmStringCreate("EXIT", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs8); n++; XtSetArg (arg[n], XmNwidth, 90); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 300); n++; XtSetArg (arg[n], XmNy, 160); n++; XtSetValues (p8, arg, n); XtAddCallback (p8, XmNactivateCallback, Quit, NULL); /*********************************************************/ p9 = XtCreateManagedWidget ("PUSHB9", xmPushButtonWidgetClass, bb, NULL, 0); n =0; cs9 = XmStringCreate("START Traversal", XmSTRING_DEFAULT_CHARSET); XtSetArg(arg[n], XmNlabelString, cs9); n++; XtSetArg (arg[n], XmNwidth, 180); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 10); n++; XtSetArg (arg[n], XmNy, 160); n++; XtSetValues (p9, arg, n); XtAddCallback (p9, XmNactivateCallback, ProcessTraversal, NULL); /*************WINDOW TO MAP *************************/ Shell = XtAppCreateShell(NULL, NULL, applicationShellWidgetClass, XtDisplay(toplevel),NULL,NULL); bb2 = XtCreateManagedWidget ("XTBB2", xmBulletinBoardWidgetClass, Shell, NULL, 0); n =0; XtSetArg (arg[n], XmNwidth, 900); n++; XtSetArg (arg[n], XmNheight,460); n++; XtSetValues (bb2, arg, n); XtVaSetValues (bb2, XtVaTypedArg, XmNbackground,XmRString, "red", 4, NULL); /*********************************************************/ for (j=0; j<9; j++) { tf1[j] = XtCreateManagedWidget (tf1_names[j], xmTextFieldWidgetClass, bb2, NULL, 0); n =0; XtSetArg (arg[n], XmNwidth, 880); n++; XtSetArg (arg[n], XmNheight, 40); n++; XtSetArg (arg[n], XmNx, 10 ); n++; XtSetArg (arg[n], XmNy, 10 + (j*50)); n++; XtSetArg (arg[n], XmNmaxLength, 4); n++; XtSetArg (arg[n], XmNhighlightThickness, 2); n++; XtSetArg (arg[n], XmNtraversalOn, True); n++; XtSetArg (arg[n], XmNcolumns, 4); n++; XtSetArg (arg[n], XmNsensitive, True); n++; XtSetArg (arg[n], XmNeditable, True); n++; XtSetValues (tf1[j], arg, n); } XtRealizeWidget (toplevel); XtAppMainLoop(app); }
REFERENCE(S): http://www.hungry.com/pipermail/lesstif/2003-October/002676.html
Did you find this helpful?