2013-04-30 4 views
0

Я использую CodeLite для создания проекта Fltk. Все кажется прекрасным, но когда я нажимаю F5 для его отладки, он всегда разбивается с подсказками «Program Received SIGSEGV». Вот стек вызовов:Не удается отладить проект Fltk, созданный CodeLite

0 0x00401c66 Fl_Widget :: Fl_Widget (интермедиат, Int, Int, Int, символ сопз *)
1 0x0040a6b1 Fl_Group :: Fl_Group (интермедиат, Int, Int, Int, символ сопз *)
2 0x004097bf Fl_Window :: Fl_Window (интермедиат, INT, символ сопза *) 3 0x00401415 главного

Я уверен, что код не имеет никаких проблем, потому что я сделал это успешно, используя CodeBlocks;

#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/с "mingw32-make.exe -j 4 -e -f " CL_TESL_wsp.mk "" ---------- Проект здания: [HelloFltk - Debug] ---------- "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 предупреждений

Новая ситуация !! Сегодня я обновляю свои CodeBlocks к новой версии, и возникает такая же проблема. Я думаю, что она согласуется с версией MinGW ... Я переделал FLTK с помощью новой версии MinGW, тоже не работает ... Так что я должен изменить путь MinGW CodeLite к старому, и он работает ... Почему я не могу использовать новейшую версию?

ответ

0

Я подозреваю, что вы пытались следовать этому учебнику:

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

В нижней части этой связи он объясняет, почему пример вы пытались не хорошо:

Эта программа имеет Большая проблема. Нажмите на кнопку. Затем попробуйте заставить перерисовать, перемещая окно или сводя к минимуму/восстанавливать. Обратите внимание на мусор, который отображается на этикетке! FLTK пытается почтить указатель, который больше не существует. НЕ ХОРОШО

Я не пробовал это сам, одним и тем же учебник предлагает исправление:

Если мы изменим строку в функции обратного вызова из о-> метки (newcap);

к

о-> 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!«); box-> коробка (FL_UP_BOX); box-> labelfont (FL_BOLD + FL_ITALIC); box-> labelsize (36); box-> labeltype (FL_SHADOW_LABEL); window-> конец(); window-> show (argc, argv); return Fl :: run(); } «Он всегда разбился при построении Fl_Widget – user2002732