0
我只是X-Windows的新手,並試圖在Linux上像Window一樣調用簡單的MessageBox的代碼。如何編譯使用Netbeans在Ubuntu 64位上實現Xm的代碼?
我在Ubuntu 12.04LTS 64bit並安裝了Netbeans完整版本。 我在這個項目中包含了「/ usr/include/Xm」,而對於libs,我包含了「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");
}
謝謝它編得非常好。另外你知道如何調整窗口的大小嗎?它彈出在非常小的窗口中。 –
你綁定了它的寬度和高度嗎? - 這可能是唯一的方法,因爲我沒有看到代碼中的佈局管理器。 – John3136
沒有,也許我必須先爲它谷歌。非常感謝你 –