我正在使用CodeLite创建一个Fltk项目.Everthing似乎很好但是当我按F5进行调试时,它总是会遇到“程序接收信号SIGSEGV”提示。 这是调用堆栈:
0 0x00401c66 Fl_Widget :: Fl_Widget(int,int,int,int,char const *)
1 0x0040a6b1 Fl_Group :: Fl_Group(int,int,int,int,char const *)
2 0x004097bf Fl_Window :: Fl_Window(int,int,char const *)3 0x00401415 main
我确信代码没有问题,因为我使用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 / c“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的版本相关...我使用新版本的MinGW重新制作FLTK,也不起作用...... 因此,我必须将CodeLite的MinGW路径更改为旧路径,并且它可以工作...为什么我不能使用最新版本?
答案 0 :(得分:0)
我怀疑您尝试按照本教程进行操作:
http://www3.telus.net/public/robark/#labels
在该链接的底部,它解释了为什么您尝试的示例不好:
这个程序有一个很大的问题。单击按钮。然后尝试通过移动窗口或最小化/恢复来强制重绘。注意标签显示的垃圾! FLTK试图推断一个不再存在的指针。不好
我自己没有尝试过,同一个教程提供了一个修复:
祝你好运, 叶兰如果我们改变回调函数中的行 邻 - &GT;标签(newcap);
到
邻 - &GT; copy_label(newcap);