2013-04-30 41 views
0

我正在使用CodeLite創建一個Fltk項目.Everthing看起來很好,但是當我按F5調試它時,它總是與「程序接收信號SIGSEGV」提示一起墜毀。 這裏是調用堆棧:無法調試由CodeLite創建的Fltk項目

0 0x00401c66 Fl_Widget :: Fl_Widget(INT,INT,INT,INT,字符常量*)
1 0x0040a6b1 Fl_Group :: Fl_Group(INT,INT,INT,INT,炭常量*)
2 0x004097bf Fl_Window :: Fl_Window(INT,INT,字符常量*)3 0x00401415主要

我肯定代碼沒有問題,因爲我已經使用的代碼塊成功使得它;

#include <FL/Fl.H> 
#include <FL/Fl_Window.H> 
#include <FL/Fl_Button.H> 
using namespace std; 

//-------------------------------------------- 
void but_cb(Fl_Widget* o, void* ) { 
Fl_Button* b=(Fl_Button*)o; 
b->label("Good job"); //redraw not necessary 

b->resize(10,150,140,30); //redraw needed 
b->redraw(); 
} 

//-------------------------------------------- 
int main() { 
Fl_Window win(300,200,"Testing"); 
win.begin(); 
    Fl_Button but(10, 150, 70, 30, "Click me"); 
win.end(); 
but.callback(but_cb); 
win.show(); 
return Fl::run(); 
} 

生成日誌,也許有用:

C:\ Windows \ System32下\ cmd.exe的/ C 「的mingw32-的make.exe -j 4 -e -f 」 CL_TESL_wsp.mk 「」 ----------建設項目:[HelloFltk - 調試] ----------「mingw32-make.exe [1]:進入目錄G:/CPP/CL_TESL/HelloFltk' g++ -o ./Debug/HelloFltk @"HelloFltk.txt" -L. -LG:/MinGW-4.7.1/lib/ -LG:/FLTK/fltk- 1.3.2/lib/ -LG:/FLTK/fltk-1.3.2/ -LG:/MinGW-4.7.1/lib/ -lgdi32 -lfltk -lfltk_forms -lfltk_gl -lfltk_images -lfltk_z -lgdi32 -lole32 -luuid -luser32 -lcomctl32 mingw32-make.exe[1]: Leaving directory G:/ CPP/CL_TESL/HelloFltk」 0錯誤,0警告

新局面! 今天更新我的代碼塊到最新版本,它發生同樣的問題。我認爲這是相對於MinGW的版本...我使用MinGW的新版本重製FLTK,也不管用... 所以我必須改變CodeLite的MinGW路徑到舊的,它的工作原理...爲什麼我不能使用最新版本?

回答

0

我懷疑你試圖遵循本教程:

http://www3.telus.net/public/robark/#labels

在那個鏈接它解釋的底部爲什麼你試過的例子並不好:

這個程序有一個大問題。點擊按鈕。然後嘗試通過移動窗口或最小化/恢復強制重繪。注意標籤顯示的垃圾! FLTK正試圖推翻一個不再存在的指針。不好

我沒有嘗試自己,用同樣的教程提供了一個修復:

如果我們改變在回調函數行從 鄰>標籤(newcap);

o-> copy_label(newcap);

祝你好運, 葉蘭

+0

現在我複製代碼從fltk.org,但問題是仍然沒有解決。 「int main(int argc,char ** argv)Fl_Window * window = new Fl_Window(340,180); Fl_Box * box = new Fl_Box(20,40,300,100,」Hello,World!「); 箱 - >箱(FL_UP_BOX); 箱 - > labelfont(FL_BOLD + FL_ITALIC); 箱 - > labelsize(36); 箱 - > labeltype(FL_SHADOW_LABEL); 窗口 - >端(); window-> show(argc,argv); return Fl :: run(); }「它總是在構造Fl_Widget時崩潰 – user2002732 2013-05-01 02:26:48