Я просто новичок в X-Windows и пытаюсь написать код, который просто вызывает простой MessageBox в Linux, например, в Window.
Я на Ubuntu 12.04LTS 64bit и установил полную версию Netbeans. Я включил «/usr/include/Xm» в этот проект, а для библиотек я включил библиотеки «Motif».
и при компиляции кода возникает следующая ошибка:
main.cpp:24:63: error: invalid conversion from ‘void (*)(Widget, XtPointer, XmPushButtonCallbackStruct*) {aka void (*)(_WidgetRec*, void*, XmPushButtonCallbackStruct*)}’ to ‘XtCallbackProc {aka void (*)(_WidgetRec*, void*, void*)}’ [-fpermissive]
/usr/include/X11/Intrinsic.h:1241:13: error: initializing argument 3 of ‘void XtAddCallback(Widget, const char*, XtCallbackProc, XtPointer)’ [-fpermissive]
Я действительно не понимаю эту ошибку, по крайней мере, я никогда не видел такого синтаксиса, как «ака пустота бла-бла~~».
Может ли кто-нибудь помочь мне исправить эту ошибку компиляции и, если возможно, объясните мне, что означает это сообщение об ошибке?
Вот оригинальный исходный код:
#include <Xm/Xm.h>
#include <Xm/PushB.h>
/* Prototype Callback function */
void pushed_fn(Widget , XtPointer ,
XmPushButtonCallbackStruct *);
main(int argc, char **argv)
{ Widget top_wid, button;
XtAppContext app;
top_wid = XtVaAppInitialize(&app, "Push", NULL, 0,
&argc, argv, NULL, NULL);
button = XmCreatePushButton(top_wid, "Push_me", NULL, 0);
/* tell Xt to manage button */
XtManageChild(button);
/* attach fn to widget */
XtAddCallback(button, XmNactivateCallback, pushed_fn, NULL);
XtRealizeWidget(top_wid); /* display widget hierarchy */
XtAppMainLoop(app); /* enter processing loop */
}
void pushed_fn(Widget w, XtPointer client_data,
XmPushButtonCallbackStruct *cbs)
{
printf("Don't Push Me!!\n");
}