1

我有这个任务,因为它需要使用 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 相关,尽管我仍然不确定需要包含哪些额外的库。

4

2 回答 2

0

只是猜测:您的 makefile 是为 Linux 编写的,而在 Cygwin 上,一些库要么丢失,要么位于不同的位置。您将不得不检查 makefile,找到丢失的库,然后将库移动到 makefile 期望它们的位置,或者更改 makefile 以查找正确的位置。

它需要的库列在开头的行上(在标志g++后面的名称前加上“lib” )-l

于 2009-11-12T02:47:38.320 回答
0

很抱歉没有关闭,但我刚刚启动了我的 Linux 上网本并让它工作了。

-lfltk -lfltk_gl -lGLU -lGL -lXext -lX11 -lm
于 2009-11-13T17:50:27.770 回答