簡體   English   中英

為什么glut.h會在CodeBlocks中彈出一堆未定義的引用?

[英]Why does glut.h pop up with a bunch of undefined references in CodeBlocks?

我想在這里了解一些東西。 如果我從OpenGL游戲編程中構建了第一個程序並以發布模式運行,則一切正常。 我在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。 我在鏈接器或搜索目錄設置中沒有任何內容。 那么,如何引用AllCode? 它在哪里獲取該信息,以及如何更改它?

據我了解,我需要讓這個東西在調試和發布模式下編譯並運行,這樣才能解決所有錯誤。 我有錯嗎?

我的系統是Windows 7 64位。 但是我正在運行Code :: Blocks 13.12 32位。 我已經安裝了非MinGW版本,然后安裝了MinGW(也是32位),並將Code :: Blocks鏈接到該版本。 使用MinGW GCC編譯器,用於c ++的g ++,用於32位編譯。

我將OpenGL32.dll和其他OpenGL dll放入MinGW \\ bin目錄。 我已經復制了OpenGL .h文件到MinGW \\ Include \\ GL中。 我在這里做錯了嗎?

我想了解如何正確地進行設置,以便我可以編譯和運行任何OpenGL代碼,即使它已有20多年的歷史了。 我不知道執行此操作的正確方法。 我將不勝感激。

更新:因此,我找到了一個libglut32win.a文件,然后添加它,或者在-lglut32win中的“編譯器/鏈接器設置/其他鏈接器選項”下鍵入該文件,以防止由於錯誤而彈出glut。 相反,我得到這些:

||=== 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)) ===|

那么這是什么意思?

這些是您未鏈接到庫時收到的標准錯誤。 您的“發布”構建設置可能包含用於鏈接到glut的條目,但“調試”構建設置沒有。 如果要在發布和調試中鏈接庫,則需要在項目級別而不是構建級別添加它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM