FLTK в Cygwin с использованием Eclipse (Связывание ошибок) - PullRequest
1 голос
/ 12 ноября 2009

У меня есть это назначение из-за использования FLTK. Код предоставлен нам, и он должен компилироваться сразу, но у меня возникают ошибки компоновки, и я не знаю, какие другие библиотеки мне нужно включить.

В настоящее время у меня есть "opengl32", "fltk_gl", "glu32" и "fltk" (-l), каждая из которых, кажется, уменьшает количество ошибок. Я скомпилировал FLTK, используя make без заданных опций. Включение всех созданных библиотечных файлов не решает проблему, и я убежден, что это просто какая-то специфическая проблема 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 голосов
/ 13 ноября 2009

Извините за отсутствие закрытия, но я только загрузился в свой нетбук Linux и получил его работать.

-lfltk -lfltk_gl -lGLU -lGL -lXext -lX11 -lm
0 голосов
/ 12 ноября 2009

Просто предположение: ваш make-файл был написан для Linux, а в Cygwin некоторые библиотеки либо отсутствуют, либо находятся в другом месте. Вам нужно будет изучить make-файл, найти недостающие библиотеки и либо переместить библиотеки туда, где их ожидает файл, либо изменить make-файл, чтобы он смотрел в нужном месте.

Необходимые библиотеки перечислены в строке, начинающейся с g++ (добавьте 'lib' к именам после флагов -l)

...