Motif 프로그래밍 중 X 윈도우 에러

정확히는 Kubuntu 8.04 에서 작업하고 있지만, 우분투에서도 비슷할거라 믿고 글 올립니다;;;

조금전 부터 Motif 프로그래밍을 시작했습니다. 소스코드를 다 치고, 라이브러리 링크 다 시킨뒤에 컴파일 까진 정상적으로 되지만… 프로그램을 실행시키면 다음과 같은 에러를 뱉으면서 죽네요…

[code:3806ey7l]X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 19 (X_DeleteProperty)
Resource id in failed request: 0x0
Serial number of failed request: 91
Current serial number in output stream: 95[/code:3806ey7l]

소스코드는 이렇습니다.

[code:3806ey7l]
#include <Xm/Xm.h>
#include <Xm/Label.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

Widget	shell, msg;
XtAppContext app;
XmString xmstr;

shell = XtAppInitialize(&amp;app, &quot;Memo&quot;, NULL, 0, &amp;argc, argv, NULL, NULL, 0);

if(argc != 2)
{
	
	fprintf(stderr, &quot;Usage &#58; memo message-string\n&quot;);
	exit(1);
	
}

xmstr = XmStringCreateLtoR(argv&#91;1&#93;, XmFONTLIST_DEFAULT_TAG);

msg = XtVaCreateManagedWidget(&quot;message&quot;, xmLabelWidgetClass, shell, XmNlabelString, xmstr, NULL);

XmStringFree(xmstr);

XtRealizeWidget(shell);
XtAppMainLoop(app);

}
[/code:3806ey7l]

제 나름대로 열심히 머리를 굴려서 알아본 결과는, XtVaCreateManagedWidget 함수에서 에러를 뱉는거 같더군요. 저녀석이 주석 처리 되니 보더의 크기가 0이라는 에러만 뱉고 말아주는데… 도와주세요 ㅠㅠㅠ

스스로 댓글을 달게 되었네요;;;

알고 봤더니, 라이브러리 링크 순서가 잘못되어져서 생긴 문제더군요;

Motif 라이브러리 - Xt 라이브러리 - Xlib 라이브러리

순으로 라이브러리를 링크시키지 않으면 제대로 링크되질 않습니다. 저의 경우, Xt - Motif - Xlib 순으로 라이브러리를 링크 시켜서 났던 에러더군요;;

cc 로 컴파일 한다면

[code:9r8h5i01]cc -o 출력명 소스명 -lXm -lXt -lX11[/code:9r8h5i01]

와 같이 순서를 지켜야 합니다.