使用Eclipse在Cygwin中使用FLTK(链接错误)

时间:2009-11-12 01:36:53

标签: c++ windows opengl linker-errors fltk

我有这个任务,因为需要使用FLTK。代码是给我们的,它应该直接编译,但我有链接错误,不知道我需要包括哪些其他库。

我目前有“opengl32”,“fltk_gl”,“glu32”和“fltk”包含(-l),每个都似乎减少了错误的数量。我使用make编译了FLTK而没有指定选项。包括所有生成的库文件并不能解决问题,我确信这只是一些Windows特定的问题。

编译日志:

**** Build of configuration Debug for project CG5 ****

make all 
Building target: CG5.exe
Invoking: Cygwin C++ Linker
g++  -o"CG5.exe"  ./src/draw_routines.o ./src/gl_window.o ./src/my_shapes.o ./src/shape.o ./src/shapes_ui.o ./src/tesselation.o   -lopengl32 -lfltk_z -lfltk_gl -lglu32 -lfltk
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x197): undefined reference to `_SelectPalette@12'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x1a7): undefined reference to `_RealizePalette@4'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x1fe): undefined reference to `_glDrawBuffer@4'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x20d): undefined reference to `_glReadBuffer@4'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x23a): undefined reference to `_glGetIntegerv@8'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x2c3): undefined reference to `_glOrtho@48'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libfltk_gl.a(Fl_Gl_Window.o):Fl_Gl_Window.cxx:(.text+0x2f3): undefined reference to `_SwapBuffers@4'
...and lots more

非常感谢你的帮助。

编辑:这几行显然与OpenGL有关,虽然我仍然不确定需要包含哪些额外的库。

2 个答案:

答案 0 :(得分:0)

只是猜测:你的makefile是为Linux编写的,而在Cygwin上,有些库要么丢失,要么在不同的地方。您将不得不检查makefile,找到缺少的库,并将libs移动到makefile期望的位置,或者将makefile更改为正确的位置。

它所需的库列在从g++开始的行上(在-l标志之后的名称前面加上'lib')

答案 1 :(得分:0)

很抱歉没有关闭,但我刚刚启动进入我的Linux上网本并开始工作。

-lfltk -lfltk_gl -lGLU -lGL -lXext -lX11 -lm