2011-09-07 109 views
3

因此,我正在學習編寫着色器並將它們合併到我的OpenGL程序中(我使用SFML 1.6來創建有效的OpenGL環境,而不是用GLUT來分解;我的IDE是Codeblocks ;我的卡支持OpenGL 3.1和GLSL 1.3)。不過,我已經遇到了麻煩。看起來我需要GLEW來幫助將GLSL着色器合併到我的程序中。所以我去了GLEW的源代碼,並使用CodeBlocks將其編譯爲靜態庫,按照最終評論here(我在文件中添加了#define GLEW_STATIC)的說明,因爲我不清楚我應該在哪裏添加它),所以我現在有四個.a文件:使用CodeBlocks將GLEW鏈接到SFML項目中的問題

libglew32.a,libglew32d.a,libglew32mx.a,libglew32mxd.a

我已經告訴我的編譯器在哪裏找頭文件(glew.h,glxew.h,wglew.h),並且我已經通過將相關目錄添加到Settings-> Compiler & Debugger ...->中告訴鏈接器在哪裏找到庫(上面)搜索目錄。在我的項目中,在Build Options-> Linker Settings-> Link Libraries下,我還鏈接了上述四個。

做上述所有的,我想glewInit調用()時出現以下錯誤:

未定義的引用「_imp__glewInit」

一些reading告訴我,我需要添加#define GLEW_STATIC之前#include <glew.h>,所以我做到了,現在我得到了一個未定義的參考「wglGetProcAddress @ 4」錯誤(我的程序中唯一的GLEW代碼行是glewInit();):

Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp||In function 'int main()':| 
Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp|43|warning: unused variable 'LightOn'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `[email protected]' follow| 
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `[email protected]'| 
||=== Build finished: 23 errors, 1 warnings ===| 

我不知所措;所有這些(鏈接/編譯/等等)的技術方面對我來說仍然是新的和令人困惑的。

爲了讓GLEW能夠工作,我需要做些什麼才能將GLSL着色器合併到我的SFML OpenGL項目中? (或者我可以在沒有GLEW或任何其他外部庫的情況下以某種方式更容易地執行此操作?這將會非常棒!)

回答

4

您還需要鏈接opengl32.lib。缺少鏈接器的這些函數會引起opengl32.dll的一部分,並且需要鏈接它才能訪問它。不在靜態庫中,而在最終的程序中。從技術上講,靜態庫不是別的,就像對象文件的存檔一樣,即編譯階段的結果。鏈接到DLL需要在可執行二進制文件的上下文中發生。

+0

非常感謝!這就是訣竅! – GarrickW