Я просто хочу поделиться тем, как я нашел решение ошибкиНет процедуры класса понимают не определен
Нет процедуры класса понимают не определен
при запуске X/Motif C приложения. Я публикую это, потому что я нашел только одну ссылку на эту проблему во время поиска в Интернете, и в ней не было никаких решений.
мне удалось решить эту проблему и хотел бы поделиться своими выводами, если вы столкнетесь с этой проблемой снова (Примечания: Я не говорю, что мое решение будет всегда решить этот тип ошибки).
Проблема
Я нашел эту проблему во время работы простой программы C, которые использовали наборы инструментов Motif и X Intrinsics.
$ gcc -Wall -c push.c
$ gcc -Wall -o push push.o -lXt -lXm
$ ./push
Error: No realize class procedure defined
Исходный код C был следующий:
#include <stdio.h>
#include <Xm/Xm.h>
#include <Xm/PushB.h>
/* Prototype Callback function */
void pushed_fn(Widget, XtPointer, XmPushButtonCallbackStruct *);
int main(int argc, char **argv)
{
Widget top_wid, button;
XtAppContext app;
Display* display;
XtToolkitInitialize();
app = XtCreateApplicationContext();
display = XtOpenDisplay(app, "localhost:10.0","push","push", NULL,0, &argc,argv);
top_wid = XtAppCreateShell(NULL, "Form", applicationShellWidgetClass, display, NULL, 0);
button = XmCreatePushButton(top_wid, "Push_me", NULL, 0);
/* tell Xt to manage button */
XtManageChild(button);
/* attach fn to widget */
XtAddCallback(button, XmNactivateCallback, (XtCallbackProc) pushed_fn, NULL);
XtRealizeWidget(top_wid); /* display widget hierarchy */
XtAppMainLoop(app); /* enter processing loop */
return 0;
}
void pushed_fn(Widget w, XtPointer client_data, XmPushButtonCallbackStruct *cbs)
{
printf("Don't Push Me!!\n");
}
Хотя я не могу привести точную ссылку на руководство по программированию X11/Motif, я уверен, что многие руководства/учебники ставят его прямо: 'lXm' должен быть связан до' lXt' и 'lX11'. По крайней мере, * LessTif * FAQ имеет соответствующую [примечание] (http://lesstif.sourceforge.net/FAQ.html#QU3.0). См. Также этот Debian [отчет об ошибках] (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718691) (их много). – Bass