Почему glut.h появляется с кучей неопределенных ссылок в CodeBlocks?

0

Я пытаюсь понять что-то здесь. Если я создам первую программу из OpenGL Game Programming и запускаю ее в режиме Release, все будет работать. Я получаю куб, отображаемый в окне OpenGL. Но если я компилирую и запускаю в режиме отладки, glut.h всплывает, с огромным списком неопределенных ссылок. Я знаю, что здесь что-то не так, мне не нужно было менять файл библиотеки, поэтому я хочу понять это. Вот все ошибки:

||=== Build: Debug in chapter1 (compiler: GNU GCC Compiler) ===|
obj\Debug\chapter1.o||In function 'glutInit_ATEXIT_HACK':|
H:\AllCode\include\glut.h|486|undefined reference to '__glutInitWithExit@12'|
obj\Debug\chapter1.o||In function 'glutCreateWindow_ATEXIT_HACK':|
H:\AllCode\include\glut.h|503|undefined reference to '__glutCreateWindowWithExit@8'|
obj\Debug\chapter1.o||In function 'glutCreateMenu_ATEXIT_HACK':|
H:\AllCode\include\glut.h|549|undefined reference to '__glutCreateMenuWithExit@8'|
obj\Debug\chapter1.o||In function 'main':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|71|undefined reference to 'glutInitDisplayMode@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|74|undefined reference to 'glutInitWindowSize@8'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|75|undefined reference to 'glutInitWindowPosition@8'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|81|undefined reference to 'glutDisplayFunc@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|82|undefined reference to 'glutReshapeFunc@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|83|undefined reference to 'glutMouseFunc@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|84|undefined reference to 'glutKeyboardFunc@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|85|undefined reference to 'glutIdleFunc@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|89|undefined reference to 'glutMainLoop@0'|
obj\Debug\chapter1.o||In function 'Z10Initializev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|102|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|102|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|108|undefined reference to 'glutSetMenu@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|109|undefined reference to 'glutAddMenuEntry@8'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|110|undefined reference to 'glutAttachMenu@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|134|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|134|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z12MouseHandleriiii':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|156|undefined reference to 'glutPostRedisplay@0'|
obj\Debug\chapter1.o||In function 'Z15KeyboardHandlerhii':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|177|undefined reference to 'glutPostRedisplay@0'|
obj\Debug\chapter1.o||In function 'Z15MainMenuHandleri':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|197|undefined reference to 'glutPostRedisplay@0'|
obj\Debug\chapter1.o||In function 'Z7Animatev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|208|undefined reference to 'glutPostRedisplay@0'|
obj\Debug\chapter1.o||In function 'Z7Displayv':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|275|undefined reference to 'glutSwapBuffers@0'|
obj\Debug\chapter1.o||In function 'Z11LoadTexturePcRj':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|287|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|287|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|292|undefined reference to 'auxDIBImageLoadA@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|311|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|313|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z9DrawScene12rendermode_t':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|323|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|323|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z8DrawCubev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|399|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|399|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|462|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|462|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z11DrawSurfacev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|472|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|472|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|510|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|510|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'ZN11CHiResTimer17GetElapsedSecondsEm':|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|47|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|47|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|59|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|59|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'ZN11CHiResTimer6GetFPSEm':|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|70|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|70|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|84|undefined reference to '_Unwind_SjLj_Resume'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Здесь что-то странное происходит... У меня нет AllCode, связанного с этим где угодно. У меня ничего нет в настройках Linker или Search Directory. Итак, как называется AllCode? Где он получает эту информацию и как ее изменить?

Насколько я понимаю, мне нужно, чтобы эта вещь собиралась и запускалась в режимах Debug и Release, таким образом, все ошибки адресуются. У меня это неправильно?

Моя система - 64-битная Windows 7. Однако я запускаю Code :: Blocks 13.12 32-bit. Я установил версию non-MinGW, затем установил MinGW (также 32-разрядный) и связал с ним Code :: Blocks. Использование компилятора MinGW GCC, g++ для c++, для 32-битного.

В каталог MinGW\bin я поместил OpenGL32.dll и другие DLL OpenGL. В MinGW\Include\GL Я скопировал файлы OpenGL.h. Я сделал что-то не так?

Я хочу понять, как правильно настроить вещи, чтобы я мог скомпилировать и запустить любой код OpenGL, даже если ему исполнилось 20 лет. Я не знаю, как правильно это сделать. Я был бы признателен за некоторые советы и помощь.

UPDATE: Таким образом, у меня есть файл libglut32win.a, который я нашел, и либо добавив его, либо в настройках компилятора/компоновщика/других параметров компоновщика, набрав в -lglut32win, перестает переполняться ошибками. Вместо этого я получаю:

||=== Build: Debug in chapter1 (compiler: GNU GCC Compiler) ===|
obj\Debug\chapter1.o||In function 'Z10Initializev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|102|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|102|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|134|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|134|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z11LoadTexturePcRj':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|287|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|287|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|292|undefined reference to 'auxDIBImageLoadA@4'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|311|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|313|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z9DrawScene12rendermode_t':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|323|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|323|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|389|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z8DrawCubev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|399|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|399|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|462|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|462|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'Z11DrawSurfacev':|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|472|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|472|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|510|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\chapter1.cpp|510|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'ZN11CHiResTimer17GetElapsedSecondsEm':|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|47|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|47|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|59|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|59|undefined reference to '_Unwind_SjLj_Unregister'|
obj\Debug\chapter1.o||In function 'ZN11CHiResTimer6GetFPSEm':|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|70|undefined reference to '__gxx_personality_sj0'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|70|undefined reference to '_Unwind_SjLj_Register'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|84|undefined reference to '_Unwind_SjLj_Resume'|
H:\My Documents\Coding\OpenGL\chapter1\HiResTimer.h|84|undefined reference to '_Unwind_SjLj_Unregister'|
||=== Build failed: 31 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Так что это значит?

  • 0
    Теперь я забыл точные подробности, как это было так давно. Тем не менее, у меня были (я думаю) похожие проблемы, когда я впервые попробовал Glut с C :: B под windows (возможно, тоже linux, я забыл). Решением для меня было загрузить и использовать замену glut, freeglut. Вы можете найти его здесь: freeglut.sourceforge.net РЕДАКТИРОВАТЬ: Только что проверил папку CodeBlocks \ MinGW \ lib - нет имени файла libglut.a - поэтому я установил freeglut - lib файлы glut не доступны с C :: B установить. (вероятно, вещь MinGW) Во всяком случае, у меня работает freeglut. Не забудьте связать это!
Теги:
opengl
gcc

1 ответ

0

Это стандартные ошибки, полученные, когда вы не связаны с библиотекой. Вероятно, у ваших настроек сборки сборки есть запись для ссылки на перенасыщение, но настройки сборки Debug нет. Если вы хотите, чтобы библиотека связывалась как с Release, так и с Debug, вам нужно добавить ее на уровне проекта, а не на уровне сборки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню