2012-06-15 3 views
0

FLTK를 사용하여 C++ 프로그램에서 xpm 파일을 그려하려고합니다.FLTK draw pixmap이 segfault를 제공합니다

여기

#include <FL/Fl.H> 
#include <FL/Fl_Window.H> 
#include "image.xpm" 
#include <FL/Fl_Pixmap.H> 
#include <FL/fl_draw.H> 
#include <FL/Fl_Image.H> 
int main(int argc, char ** argv) 
{ 
    Fl_Window *window = new Fl_Window(800,650); 
    Fl_Pixmap pix(XFACE); 
    pix.draw(200,200); 
    window->end(); 
    window->show(argc,argv); 
    return Fl::run(); 
} 

XFACE는 "image.xpm"

내부 유효한 XPM 개체입니다하지만이 pix.draw() 라인에서 세그먼트 오류를 ​​받고 있어요 코드입니다.
이 원인은 무엇입니까?

+1

모든 것? 아무것도? 솔직히, 현재로서는 질문에 대답하는 것이 불가능합니다. 적어도 XPM을 포함하도록 질문을 수정하거나 적어도 XPM의 시작과 끝을 수정하십시오. –

+0

SSCCE를 작성하거나 (http://sscce.org/) 적어도 완전한 오류 출력을 포함하는 어딘가에 웹 붙여 넣기를하십시오. 첫 번째 추측은 - 유효한 FLTK 컨텍스트가 없으므로 Fl_Pixmap이 수행합니다. 렌더링 자체를 알 수 없거나 XPM이 유효하지 않습니다 ... – DejanLekic

+0

오케이, 편집했습니다. – Gonzo

답변

3
/* Try this - this works for me, and I guess is what you meant! */ 

#include <FL/Fl.H> 
#include <FL/Fl_Window.H> 
#include <FL/Fl_Box.H> 
#include <FL/Fl_Pixmap.H> 

#include "image.xpm" 

int main(int argc, char ** argv) 
{ 
    Fl_Window *window = new Fl_Window(800,650); 
    Fl_Box *image_box = new Fl_Box(5, 5, 790, 640); 
    Fl_Pixmap pix(XFACE); 
    window->end(); 
    image_box->image(pix); 
    window->show(argc,argv); 
    return Fl::run(); 
} 

/* end of file */ 
0

솔직히 말해서, 유효한 fltk 코드와 같지 않습니다. draw() 메서드를 직접 호출하고, fltk에서 드물게 유효한 AFAIK를 호출합니다.

메일 링리스트에서 물어보기를 원할 것입니다. 응답이 좋습니다.

또한 tarball의 "test"폴더에서 pixmap 데모를 보았습니까? 그 작업이 무엇인지 확인한 다음 복사하십시오!